Project

General

Profile

« Previous | Next » 

Revision 3998

Added by berkley almost 16 years ago

putting the sms skin in the sms directory for real

View differences:

lib/style/skins/sms/sms.cfg
1
#
2
# General configuration parameters
3
#
4
metacatUrl = http://linus.nceas.ucsb.edu:80/sms/metacat
5
username = uid=knbadmin,o=NCEAS,dc=ecoinformatics,dc=org
6
password = your-pw-goes-here
7
ldapUrl=ldap://ldap.ecoinformatics.org/dc=ecoinformatics,dc=org
8
defaultScope = sms
9
organization = SEEK
10
orgabbrev = SEEK
11
orgurl = http://seek.ecoinformatics.org/
12
responseTemplate = genericResponse.tmpl
13
entryFormTemplate = entryForm.tmpl
14
guideTemplate = genericGuide.tmpl
15
confirmDataTemplate = confirmData.tmpl
16
deleteDataTemplate = deleteData.tmpl
17
accesspubid = -//ecoinformatics.org//eml-access-2.0.0beta6//EN
18
accesssysid = eml-access.dtd
19
datasetpubid = eml://ecoinformatics.org/eml-dataset-2.0.0
20
datasetsysid = eml-dataset.dtd
21
mailhost = localhost 
22
sender = KNB Data Registry <help@nceas.ucsb.edu>
23
recipient = help@nceas.ucsb.edu
24
adminname = the repository administrator
25
debug = 1
26
lsite = 'station'
27
usite = 'Station'
28
showSiteList = 'false'
29
showWgList = 'false'
30
showOrganization = 'true'
31
hasTaxonomic = 'true'
32
hasMethod = 'true'
33
hasSpatial = 'true'
34
hasKeyword = 'true'
35
hasTemporal = 'true'
36
nceas_db = somedb
37
nceas_db_user = someuser
38
nceas_db_password = your-pw-goes-here
0 39

  
lib/style/skins/sms/sms.xml
1
<?xml version="1.0"?>
2
<style-set name="sms">
3
<!-- general login & search -->
4
  <default-style>/style/common/ascii-treeview.xsl</default-style>
5
  
6
  <doctype publicid="message">
7
    <target publicid="-//W3C//HTML//EN">/style/skins/sms/redirect.xsl</target>
8
  </doctype>
9

  
10
  <doctype publicid="-//NCEAS//resultset//EN">
11
    <target publicid="-//W3C//HTML//EN">/style/common/resultset.xsl</target>
12
  </doctype>
13

  
14
<!-- added back login authentication for the registry workflow -->
15
  <doctype publicid="-//NCEAS//login//EN">
16
    <target publicid="-//W3C//HTML//EN">/style/common/login.xsl</target>
17
  </doctype>
18

  
19
  <!--FGDC styles -->
20
  <doctype publicid="metadata">
21
    <target publicid="-//W3C//HTML//EN">/style/skins/knb/knb_fgdc.xsl</target>
22
  </doctype>
23
<!--
24
  <doctype publicid="-//NCEAS//eml-generic//EN">
25
    <target publicid="-//W3C//HTML//EN">/style/common/generic-morpho.xsl</target>
26
  </doctype>
27
-->
28

  
29
<!-- pre-beta6 modules -->
30
<!-- NOTE these settings are unchanged from the previous version - only the xsl 
31
     filename has changed from "eml-dataset-display.xsl" to "eml-dataset-2.0.0beta4.xsl" -->
32
  <doctype publicid="eml://ecoinformatics.org/eml-2.0.1">
33
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.1/eml.xsl</target>
34
  </doctype>
35
  <doctype publicid="eml://ecoinformatics.org/eml-2.0.0">
36
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.1/eml.xsl</target>
37
  </doctype>
38
  <doctype publicid="-//NCEAS//eml-dataset//EN">
39
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta4/eml-dataset-2.0.0beta4.xsl</target>
40
  </doctype>
41
  <doctype publicid="-//NCEAS//eml-dataset-2.0//EN">
42
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta4/eml-dataset-2.0.0beta4.xsl</target>
43
  </doctype>
44
  <doctype publicid="-//NCEAS//eml-resource//EN">
45
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta4/eml-dataset-2.0.0beta4.xsl</target>
46
  </doctype>
47
  <doctype publicid="-//ecoinformatics.org//eml-dataset-2.0.0beta4//EN">
48
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta4/eml-dataset-2.0.0beta4.xsl</target>
49
  </doctype>
50
<!-- beta6 modules -->
51
  <doctype publicid="-//ecoinformatics.org//eml-access-2.0.0beta6//EN">
52
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-access-2.0.0beta6.xsl</target>
53
  </doctype>
54
  <doctype publicid="-//ecoinformatics.org//eml-attribute-2.0.0beta6//EN">
55
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-attribute-2.0.0beta6.xsl</target>
56
  </doctype>
57
  <doctype publicid="-//ecoinformatics.org//eml-constraint-2.0.0beta6//EN">
58
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-constraint-2.0.0beta6.xsl</target>
59
  </doctype>
60
  <doctype publicid="-//ecoinformatics.org//eml-coverage-2.0.0beta6//EN">
61
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-coverage-2.0.0beta6.xsl</target>
62
  </doctype>
63
  <doctype publicid="-//ecoinformatics.org//eml-dataset-2.0.0beta6//EN">
64
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-dataset-2.0.0beta6.xsl</target>
65
  </doctype>
66
  <doctype publicid="-//ecoinformatics.org//eml-entity-2.0.0beta6//EN">
67
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-entity-2.0.0beta6.xsl</target>
68
  </doctype>
69
  <doctype publicid="-//ecoinformatics.org//eml-literature-2.0.0beta6//EN">
70
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-literature-2.0.0beta6.xsl</target>
71
  </doctype>
72
  <doctype publicid="-//ecoinformatics.org//eml-physical-2.0.0beta6//EN">
73
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-physical-2.0.0beta6.xsl</target>
74
  </doctype>
75
  <doctype publicid="-//ecoinformatics.org//eml-project-2.0.0beta6//EN">
76
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-project-2.0.0beta6.xsl</target>
77
  </doctype>
78
  <doctype publicid="-//ecoinformatics.org//eml-protocol-2.0.0beta6//EN">
79
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-protocol-2.0.0beta6.xsl</target>
80
  </doctype>
81
  <doctype publicid="-//ecoinformatics.org//eml-software-2.0.0beta6//EN">
82
    <target publicid="-//W3C//HTML//EN">/style/common/eml-2.0.0beta6/eml-software-2.0.0beta6.xsl</target>
83
  </doctype>
84
</style-set>
0 85

  
lib/style/skins/sms/harvesterRegistrationLogin.jsp
1
<%@ page    language="java" %>
2
<%
3
/**
4
 * '$RCSfile$'
5
 *  Copyright: 2008 Regents of the University of California and the
6
 *             National Center for Ecological Analysis and Synthesis
7
 * '$Author$'
8
 * '$Date$'
9
 * '$Revision$'
10

  
11
 * This program is free software; you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation; either version 2 of the License, or
14
 * (at your option) any later version.
15

  
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 *   
21
 * You should have received a copy of the GNU General Public License
22
 * along with this program; if not, write to the Free Software
23
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24
 */
25
 %>
26

  
27
 <%@ include file="../../common/common-settings.jsp"%>
28

  
29
<html> 
30
<head>
31
<title>Metacat Harvester Registration Login</title>
32
</head>
33

  
34
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
35
<br><center>
36
<h3>
37
<font color="#132B76" face=verdana size=2%>
38
<b>Metacat Harvester Registration Login</b>
39
</font>
40
</h3>
41

  
42
<form name="myform" 
43
      method="POST" 
44
      action="<%=SERVER_URL_WITH_CONTEXT%>/harvesterRegistrationLogin">
45

  
46
<table width=400 align=center cellspacing=1 cellpadding=1 
47
       border=0 bgcolor="#333366">
48
  <tr>
49
    <td>
50
      <table bgcolor="#ffffff" border="0" cellpadding="1" width='100%' >
51
        <tr > <td colspan=3 align=center >&nbsp;</td> </tr>
52
        <tr > 
53
          <td colspan=3 align=center >
54
            <font face=verdana size=1%>
55
              <b>Please  Enter Username, Organization, and Password</b>
56
            </font>
57
          </td> 
58
        </tr>
59
        <tr>
60
          <td width='10%'> &nbsp;</td>
61
          <td width="25%" bgcolor="#4682b4">
62
            <p align="center">
63
            <font color="white" face=verdana size=2%>
64
            <b>Username</b>
65
            </font>
66
          </td>
67
          <td><p><input type="text" name="uid" maxlength="100" size="28"></td>
68
        </tr>
69
        <tr>
70
          <td width='10%'> &nbsp;</td>
71
          <td width="25%" bgcolor="#4682b4">
72
            <p align="center">
73
            <font color="white" face=verdana size=2%>
74
            <b>Organization</b>
75
            </font>
76
          </td>
77
          <td>
78
            <input type="radio" name="o" value="NCEAS">NCEAS
79
            <input type="radio" name="o" value="LTER">LTER
80
            <input type="radio" name="o" value="NRS">NRS
81
            <br>
82
            <input type="radio" name="o" value="PISCO">PISCO
83
            <input type="radio" name="o" value="OBFS">OBFS
84
            <input type="radio" name="o" value="Unaffiliated">Unaffiliated
85
        </tr>
86
        <tr>
87
          <td width='10%'> &nbsp;</td>
88
          <td bgcolor="#4682b4">
89
            <p align="center">
90
            <font color="white" face=verdana size=2%>
91
            <b>Password</b>
92
            </font>
93
          </td>
94
          <td><p><input type="password" name="passwd" maxlength="60" size="28">
95
          </td>
96
        </tr>
97
        <tr> <td colspan=3 align=center >&nbsp;</td></tr>
98
      </table>
99
    </td>
100
  </tr>
101
</table>
102
<br>
103
<p>
104
<input type="submit" value="Login">
105
<input type="reset" value="Reset">
106
</form>
107
</body>
0 108

  
lib/style/skins/sms/index.jsp
1
<%
2
  String docid = request.getParameter("docid");
3
  String status = request.getParameter("status");
4
%>
5
<html>
6
<head>
7
  <link rel="stylesheet" type="text/css" href="style/skins/sms/sms.css"/>
8
  <script src="style/skins/sms/jquery-1.2.6.min.js"></script>
9
  <script src="style/skins/sms/util.js"></script>
10
  <script type="text/javascript">
11
    
12
  </script>
13
  
14
  
15
  <title>Semantic Mediation System</title>
16
  
17
</head>
18
<body onload="checkLogin()">
19
  
20
  <div style="width: 700px; margin: 0px auto; border:0px; padding:0px;">
21
  <img style="position:relative; top: 15px;" src="style/skins/sms/sms-page-top.png"/>
22
  <div id="page">
23
    <div style="width:650px; border:5px; margin:0px auto;">
24
      <h1 style="text-align:center">SEEK Semantic Mediation Tools</h1>
25
    </div>
26
    <div style="width: 650px; border: 5px; margin: 0px auto; background: grey">
27
      <div id="loginheaderdiv">
28
        <h2 style="text-align:center" id="loginheader">Please Login</h2>
29
      </div>
30
      <div id="loginformdiv">
31
      <form action="metacat" name="loginform" method="POST">
32
        <div style="width:300px; margin:0px auto; height: 150px;">
33
        <table>
34
          <tr>
35
            <td>Username:</td><td><input id="un" type="text" name="username"/></td>
36
          </tr>
37
          <tr>
38
            <td>Organization:</td><td><input id="org" type="text" name="organization"/></td>
39
          </tr>
40
          <tr>
41
            <td>Password:</td><td><input id="pw" type="password" name="password"/></td>
42
          </tr>
43
          <tr>
44
            <td><a href="javascript:" onclick="login()">[Login]</a></td>
45
          </tr>
46
        </table>
47
        
48
      </form>
49
      </div>
50
      </div>
51
      
52
      <div id="maindiv" style="display:none; width:625px; margin:0px auto;">
53
      <table style="width:625px">
54
        <tr valign="top">
55
          <td width="312px">
56
            <div id="leftspan" style="background:grey; border:1px solid">
57
              <h4 style="text-align:center">Semantic Search</h4>
58
            </div>
59
          </td>
60
          
61
          <td width="312px">
62
            <div id="rightspan" style="background:grey; border:1px solid; padding:10px;">
63
              <h4 style="text-align:center">Upload an ontology or data package</h4>
64
              <form action="metacat" name="uploadform" method="POST" enctype="multipart/form-data">
65
                <input type="hidden" name="action" value="insertmultipart"/>
66
                <input type="hidden" name="qformat" value="sms"/>
67
                <table>
68
                  <tr>
69
                    <td>File:</td><td><input type="file" id="datafile" name="datafile"/></td>
70
                  </tr>
71
                  <tr>
72
                    <td>DocId:</td><td><input id="docidtextfield" type="text" name="docid" readonly="true"/></td>
73
                  </tr>
74
                  <tr>
75
                    <td><a href="javascript:" onclick="uploadfile()">[Upload]</a>
76
                    <!--<input type="submit"/></td>-->
77
                  </tr>
78
                </table>
79
              </form>
80
              <div id="uploadstatus">
81
              <%
82
                if(status != null && status.equals("success"))
83
                {
84
                  out.print("Your file was successfully uploaded.  The url to " +
85
                  "your file is <a href=\"http://linus.nceas.ucsb.edu/sms/metacat?docid=" + docid 
86
                  + "&action=read&qformat=sms\">http://linus.nceas.ucsb.edu/sms/metacat?action=read&qformat=sms&docid=" + docid +
87
                  "</a>");
88
                }
89
                else
90
                {
91
                  if(docid != null)
92
                  {
93
                    out.print("Sorry, your file upload failed.  Try logging in again.");
94
                  }
95
                }
96
                
97
                %>
98
              </div>
99
            </div>
100
          </td>
101
        </tr>
102
      </table>
103
      </div>
104
      
105
    </div>
106
  </div>
107
  <img id="bottomimg" src="style/skins/sms/sms-page-bottom.png" style="position:relative; bottom: 0px;"/>
108
  </div>
109
</body>
110
</html>
0 111

  
lib/style/skins/sms/test.html
1
<html>
2
<body>
3
<script>
4
var url = "post.php";
5
var binary;
6
var filename;
7
var mytext;
8

  
9
function upload() {
10
	filename = document.getElementById('myfile').value;
11
	mytext = document.getElementById('mytext').value;
12
	document.getElementById('ajaxbutton').disabled = true;
13

  
14
	
15
	
16
	// open the local file
17
	var file = Components.classes["@mozilla.org/file/local;1"]
18
		.createInstance(Components.interfaces.nsILocalFile);
19
	file.initWithPath( filename );		
20
	stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
21
		.createInstance(Components.interfaces.nsIFileInputStream);
22
	stream.init(file,	0x01, 00004, null);
23
	var bstream =  Components.classes["@mozilla.org/network/buffered-input-stream;1"]
24
		.getService();
25
	bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
26
	bstream.init(stream, 1000);
27
	bstream.QueryInterface(Components.interfaces.nsIInputStream);
28
	binary = Components.classes["@mozilla.org/binaryinputstream;1"]
29
		.createInstance(Components.interfaces.nsIBinaryInputStream);
30
	binary.setInputStream (stream);
31

  
32
	// start AJAX file upload in 1 second
33
	window.setTimeout("ajax_upload()", 1000);
34
}
35

  
36
function ajax_upload() {
37
	// request more permissions
38
	
39

  
40
	http_request = false;
41
	http_request = new XMLHttpRequest();
42
	if (!http_request) {
43
		alert('Cannot create XMLHTTP instance');
44
		return false;
45
	}
46

  
47
	// prepare the MIME POST data
48
	var boundaryString = 'capitano';
49
	var boundary = '--' + boundaryString;
50
	var requestbody = boundary + '\n' 
51
	+ 'Content-Disposition: form-data; name="mytext"' + '\n' 
52
	+ '\n' 
53
	+ mytext + '\n' 
54
	+ '\n' 
55
	+ boundary + '\n' 
56
	+ 'Content-Disposition: form-data; name="myfile"; filename="' 
57
		+ filename + '"' + '\n' 
58
	+ 'Content-Type: application/octet-stream' + '\n' 
59
	+ '\n'
60
	+ escape(binary.readBytes(binary.available()))
61
	+ '\n'
62
	+ boundary;
63

  
64
	document.getElementById('sizespan').innerHTML = 
65
		"requestbody.length=" + requestbody.length;
66
	
67
	// do the AJAX request
68
	http_request.onreadystatechange = requestdone;
69
	http_request.open('POST', url, true);
70
	http_request.setRequestHeader("Content-type", "multipart/form-data; \
71
		boundary=\"" + boundaryString + "\"");
72
	http_request.setRequestHeader("Connection", "close");
73
	http_request.setRequestHeader("Content-length", requestbody.length);
74
	http_request.send(requestbody);
75

  
76
}
77

  
78
function requestdone() {
79
	if (http_request.readyState == 4) {
80
		if (http_request.status == 200) {
81
			result = http_request.responseText;
82
			document.getElementById('myspan').innerHTML = result;            
83
		} else {
84
			alert('There was a problem with the request.');
85
		}
86
		document.getElementById('ajaxbutton').disabled = false;
87
	}
88
}
89

  
90
</script>
91

  
92
<form>
93
Text: <input type="text" id="mytext" name="mytext" size="40">
94
<br>
95
File: <input type="file" id="myfile" name="datafile" size="40"><br>
96
<input type="button" id="ajaxbutton" value="AJAX IT" onclick="upload();">
97
</form>
98

  
99
<div id="sizespan"></div>
100
<hr>
101
<div id="myspan"></div>
102

  
103
</body>
104
</html>
0 105

  
lib/style/skins/sms/redirect.xsl
1
<?xml version="1.0"?> 
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3

  
4
  <xsl:template match="/success">
5
    <html>
6
      <script type="text/javascript">
7
        function redirect()
8
        {
9
          var url = "/sms/?docid=" + "<xsl:value-of select="./docid"/>" + "&amp;status=success";
10
          window.location = url;
11
        }
12
      </script>
13
      <body onload="javascript:redirect()">
14
      <!--  <p>File uploaded successfully with docid <xsl:value-of select="./docid"/>.  
15
        <a href="redirect.php?docid="/>-->
16
      </body>
17
    </html>
18
  </xsl:template>
19
  
20
  <xsl:template match="/error">
21
    <html>
22
      <script type="text/javascript">
23
        function redirect()
24
        {
25
          var url = "/sms/?status=fail";
26
          window.location = url;
27
        } 
28
      </script>
29
      <body onload="javascript:redirect()">
30
      <!--  <p>File uploaded successfully with docid <xsl:value-of select="./docid"/>.  
31
        <a href="redirect.php?docid="/>-->
32
      </body>
33
    </html>
34
  </xsl:template>
35

  
36
</xsl:stylesheet>
0 37

  
lib/style/skins/sms/util.js
1
function login()
2
{
3
  var user = document.getElementById("un").value;
4
  var org = document.getElementById("org").value;
5
  var pass = document.getElementById("pw").value;
6
  var ldapUsername = 'uid=' + user + ',o=' + org + ',dc=ecoinformatics,dc=org';
7
  
8
  $.get("metacat", {username: ldapUsername, password: pass, action:"login", qformat:"xml"}, 
9
    function(data) {
10
      //alert('user ' + ldapUsername + ' logged in.  data:' + data);
11
      if(data.indexOf('<sessionId>') != -1)
12
      { //login successful
13
        //alert('user logged in');
14
        slideUp("#loginformdiv");
15
        setCookie("sms-login", true);
16
        setCookie("sms-user", user);
17
        setCookie("sms-org", org);
18
        setLoginHeader(true);
19
      }
20
      else
21
      { //login not successful
22
        alert('Sorry, your login failed.  Please try again.  If you need a username, please go to http://knb.ecoinformatics.org.');
23
        setCookie("sms-login", false);
24
      }
25
      
26
    }, "XML");
27
}
28

  
29
function setLoginHeader(loggedin)
30
{
31
  if(loggedin)
32
  {
33
    var user = getCookie("sms-user");
34
    $('#loginheader').replaceWith("<h2 style=\"text-align:center\" id=\"loginheader\">" 
35
      + user + " Logged In <a href=\"javascript:\" onclick=\"logout()\" style=\"font-size:70%\">[logout]</a></h2>");
36
    slideUp("#loginformdiv");
37
    $('#maindiv').css("display", "block");
38
    $('#bottomimg').css("bottom", "0px");
39
    $.get("metacat", {action:"getlastdocid", scope:"sms"}, 
40
      function(data)
41
      {
42
        var docid = data.substring(data.indexOf("<docid>") + 7, data.indexOf("</docid>"));
43
        var nextid;
44
        if(docid == 'null')
45
        {
46
          nextid = "sms.1.1";
47
        }
48
        else
49
        {
50
          nextid = docid.substring(docid.indexOf(".") + 1, docid.lastIndexOf("."));
51
          nextid++;
52
          nextid = "sms." + nextid + ".1";
53
        }
54
        $('#docidtextfield').val(nextid); 
55
      }, 
56
      "XML");
57
  }
58
  else
59
  {
60
    $('#loginheader').replaceWith("<h2 style=\"text-align:center\" id=\"loginheader\">" 
61
      + "Please Log In</h2>");
62
    slideDown("#loginformdiv");
63
    $('#maindiv').css("display", "none");
64
    $('#bottomimg').css("bottom", "15px");
65
  }
66
}
67

  
68
function logout()
69
{
70
  $.get("metacat", {action:"logout", qformat:"xml"});
71
  setLoginHeader(false);
72
  setCookie("sms-login", false);
73
}
74

  
75
function checkLogin()
76
{
77
  if(getCookie("sms-login") == "true")
78
  {
79
    setLoginHeader(true);
80
  }
81
  else
82
  {
83
    setLoginHeader(false);
84
  }
85
}
86

  
87
function uploadfile()
88
{
89
  if(getCookie("sms-login") != "true")
90
  {
91
    alert('You cannot upload.  You are not logged in.');
92
    return;
93
  }
94
  
95
  /*$.post("metacat", $("form").serialize(), 
96
    function(data)
97
    {
98
      alert($("form").serialize());
99
      alert(data);
100
    }, 
101
    "XML");*/
102
  $("form").submit();
103
}
104

  
105
function slideUp(id)
106
{
107
  $(id).slideUp("slow");
108
}
109

  
110
function slideDown(id)
111
{
112
  $(id).slideDown("slow");
113
}
114

  
115
function setCookie( name, value, expires, path, domain, secure ) 
116
{
117
  // set time, it's in milliseconds
118
  var today = new Date();
119
  today.setTime( today.getTime() );
120
  
121
  /*
122
  if the expires variable is set, make the correct 
123
  expires time, the current script below will set 
124
  it for x number of days, to make it for hours, 
125
  delete * 24, for minutes, delete * 60 * 24
126
  */
127
  if ( expires )
128
  {
129
    expires = expires * 1000 * 60 * 60 * 24;
130
  }
131
  var expires_date = new Date( today.getTime() + (expires) );
132
  
133
  document.cookie = name + "=" +escape( value ) +
134
  ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
135
  ( ( path ) ? ";path=" + path : "" ) + 
136
  ( ( domain ) ? ";domain=" + domain : "" ) +
137
  ( ( secure ) ? ";secure" : "" );
138
}
139

  
140
function getCookie( check_name ) {
141
	// first we'll split this cookie up into name/value pairs
142
	// note: document.cookie only returns name=value, not the other components
143
	var a_all_cookies = document.cookie.split( ';' );
144
	var a_temp_cookie = '';
145
	var cookie_name = '';
146
	var cookie_value = '';
147
	var b_cookie_found = false; // set boolean t/f default f
148
	
149
	for ( i = 0; i < a_all_cookies.length; i++ )
150
	{
151
		// now we'll split apart each name=value pair
152
		a_temp_cookie = a_all_cookies[i].split( '=' );
153
		
154
		// and trim left/right whitespace while we're at it
155
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
156
	
157
		// if the extracted name matches passed check_name
158
		if ( cookie_name == check_name )
159
		{
160
			b_cookie_found = true;
161
			// we need to handle case where cookie has no value but exists (no = sign, that is):
162
			if ( a_temp_cookie.length > 1 )
163
			{
164
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
165
			}
166
			// note that in cases where cookie is initialized but no value, null is returned
167
			return cookie_value;
168
			break;
169
		}
170
		a_temp_cookie = null;
171
		cookie_name = '';
172
	}
173
	if ( !b_cookie_found )
174
	{
175
		return null;
176
	}
177
}		
0 178

  
lib/style/skins/sms/sms.css
1
body 
2
{
3
	font-size: 70%; /* Resets 1em to 10px */
4
	font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
5
	background-color: white;
6
	color: #333;
7
}
8
  
9
#page 
10
{
11
  width: 700px;
12
  margin: 00px auto;
13
  border: 0px;
14
  background: #e7bd59;
15
}
16

  
17
img
18
{
19
  border: 0px;
20
}
21

  
22
p
23
{
24
  padding: 5px;
25
}
26

  
27
.headerbar
28
{
29
  width: 650px;
30
  margin: 0px auto;
31
  border: 1px;
32
}
33

  
34
a:hover
35
{
36
  color:#e7bd59;
37
}
38

  
39
a
40
{
41
  text-decoration:none;
42
  color:white;
43
  font-size: 70%;
44
}
0 45

  
lib/style/skins/sms/post.php
1
<?
2
print_r($_FILES);
3
?>
4
<hr>
5
<?
6
print_r($_POST);
7

  
8
$fpath = "/tmp/";
9

  
10
// move (actually just rename) the temporary file to the real name
11
move_uploaded_file ( $_FILES{myfile}{tmp_name}, $fpath.$_FILES{myfile}{name} );
12

  
13
// convert the uploaded file back to binary
14

  
15
// javascript "escape" does not encode the plus sign "+", but "urldecode"
16
//	in PHP make a space " ". So replace any "+" in the file with %2B first
17

  
18
$filename = $fpath.$_FILES{myfile}{name};
19
$handle = fopen($filename, "r");
20
$contents = fread($handle, filesize($filename));
21
fclose($handle);
22

  
23
$contents = preg_replace("/\+/", "%2B", $contents);
24

  
25
$handle = fopen($filename, "w");
26
fwrite($handle, urldecode($contents));
27
fclose($handle);
28

  
29
?>
0 30

  
lib/style/skins/sms/index.php
1
<?php
2
  $status = $_REQUEST['uploadStatus'];
3
  $docid = $_REQUEST['docid'];
4
?>
5

  
6
<html>
7
<head>
8
  <link rel="stylesheet" type="text/css" href="style/skins/sms/sms.css"/>
9
  <script src="style/skins/sms/jquery-1.2.6.min.js"></script>
10
  <script src="style/skins/sms/util.js"></script>
11
  <script type="text/javascript">
12
    
13
  </script>
14
  
15
  <?php
16
  print '<title>Semantic Mediation System - ' . $status . '</title>';
17
  ?>
18
</head>
19
<body onload="checkLogin()">
20
  
21
  <div style="width: 700px; margin: 0px auto; border:0px; padding:0px;">
22
  <img style="position:relative; top: 15px;" src="style/skins/sms/sms-page-top.png"/>
23
  <div id="page">
24
    <div style="width:650px; border:5px; margin:0px auto;">
25
      <h1 style="text-align:center">SEEK Semantic Mediation Tools</h1>
26
    </div>
27
    <div style="width: 650px; border: 5px; margin: 0px auto; background: grey">
28
      <div id="loginheaderdiv">
29
        <h2 style="text-align:center" id="loginheader">Please Login</h2>
30
      </div>
31
      <div id="loginformdiv">
32
      <form action="metacat" name="loginform" method="POST">
33
        <div style="width:300px; margin:0px auto; height: 150px;">
34
        <table>
35
          <tr>
36
            <td>Username:</td><td><input id="un" type="text" name="username"/></td>
37
          </tr>
38
          <tr>
39
            <td>Organization:</td><td><input id="org" type="text" name="organization"/></td>
40
          </tr>
41
          <tr>
42
            <td>Password:</td><td><input id="pw" type="password" name="password"/></td>
43
          </tr>
44
          <tr>
45
            <td><a href="javascript:" onclick="login()">[Login]</a></td>
46
          </tr>
47
        </table>
48
        
49
      </form>
50
      </div>
51
      </div>
52
      
53
      <div id="maindiv" style="display:none; width:625px; margin:0px auto;">
54
      <table style="width:625px">
55
        <tr valign="top">
56
          <td width="50%">
57
            <div id="leftspan" style="background:grey; border:1px solid">
58
              <h4 style="text-align:center">Semantic Search</h4>
59
            </div>
60
          </td>
61
          
62
          <td width="50%">
63
            <div id="rightspan" style="background:grey; border:1px solid; padding:10px;">
64
              <h4 style="text-align:center">Upload an ontology or data package</h4>
65
              <form action="metacat" name="uploadform" method="POST" enctype="multipart/form-data">
66
                <input type="hidden" name="action" value="upload"/>
67
                <input type="hidden" name="qformat" value="sms"/>
68
                <table>
69
                  <tr>
70
                    <td>File:</td><td><input type="file" id="datafile" name="datafile"/></td>
71
                  </tr>
72
                  <tr>
73
                    <td>DocId:</td><td><input id="docidtextfield" type="text" name="docid" readonly="true"/></td>
74
                  </tr>
75
                  <tr>
76
                    <?php
77
                    if($status == 'success')
78
                    {
79
                      print '<td>Your file was successfully uploaded.  The url to ' .
80
                      'your file is <a href="http://linus.nceas.ucsb.edu/sms/metacat/' . $docid 
81
                      . '">http://linus.nceas.ucsb.edu/sms/metacat/' . $docid .
82
                      '</a></td>';
83
                    }
84
                    else
85
                    {
86
                      print '<td>Sorry, your file upload failed.  Try logging in again.</td>';
87
                    }
88
                    
89
                    ?>
90
                  </tr>
91
                  <tr>
92
                    <td><a href="javascript:" onclick="uploadfile()">[Upload]</a>
93
                    <!--<input type="submit"/></td>-->
94
                  </tr>
95
                </table>
96
              </form>
97
            </div>
98
          </td>
99
        </tr>
100
      </table>
101
      </div>
102
      
103
    </div>
104
  </div>
105
  <img id="bottomimg" src="style/skins/sms/sms-page-bottom.png" style="position:relative; bottom: 0px;"/>
106
  </div>
107
</body>
108
</html>
0 109

  
lib/style/skins/sms/sms.js
1
 /**
2
  *   '$RCSfile$'
3
  *     Purpose: Default style sheet for KNB project web pages 
4
  *              Using this stylesheet rather than placing styles directly in 
5
  *              the KNB web documents allows us to globally change the 
6
  *              formatting styles of the entire site in one easy place.
7
  *   Copyright: 2000 Regents of the University of California and the
8
  *               National Center for Ecological Analysis and Synthesis
9
  *     Authors: Matt Jones
10
  *
11
  *    '$Author$'
12
  *      '$Date$'
13
  *  '$Revision$'
14
  *
15
  * This program is free software; you can redistribute it and/or modify
16
  * it under the terms of the GNU General Public License as published by
17
  * the Free Software Foundation; either version 2 of the License, or
18
  * (at your option) any later version.
19
  *
20
  * This program is distributed in the hope that it will be useful,
21
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
  * GNU General Public License for more details.
24
  *
25
  * You should have received a copy of the GNU General Public License
26
  * along with this program; if not, write to the Free Software
27
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
  */
29

  
30
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
31
 * * * * * *  CONFIGURATION SETTINGS - EDIT THESE FOR YOUR ENVIRONMENT * * * * 
32
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
33

  
34
 
35
//  These settings allow you to include and display common content (eg a common 
36
//  header) on all your pages, in much the same way as a frameset allows you to 
37
//  do, but through the use of iframes and a table instead. You can include up 
38
//  to 4 external pages, each one within the header, footer, left or right areas
39
//
40
//  looks like this (if you're using a fixed width font to display these notes):
41
//    ___________________
42
//    |     header      |
43
//    |-----------------|
44
//    | |             | |
45
//    | |             | |
46
//    |L|   content   |R|
47
//    | |             | |
48
//    | |             | |
49
//    |-----------------|
50
//    |     footer      | 
51
//    -------------------
52
//
53
//  Each area may display another page on the local site, or a page on a 
54
//  different server, or may be set to display nothing (in which case an iframe 
55
//  will not be drawn, although the containing table cell will still need to be 
56
//  resized using the css style - see below) 
57
//
58
//  NOTES:
59
//
60
//  1) if you have any links in the included documents, the target attribute for 
61
//     these *MUST* be set to _top, otherwise the new document will be displayed 
62
//     inside the small iframe areas, instead of replacing the entire page!
63
//     - example: <a href="index.html" target="_top">HOME</a>
64
//   
65
//  2) you will need to set the correct iframe size, in order to accomodate 
66
//     each of these areas on the page. The default location for these size 
67
//     settings is in the default.css file - see the "IFRAME_XXXXXX_CLASS" 
68
//     variables (below) for the name of the style to edit
69
//
70
//  3) you will also need to set the correct table cell sizes and/or overall 
71
//     table size for similar reasons. The default location for these size 
72
//     settings is in the default.css file - see the "TEMPLATE_XXXXXX_CLASS" 
73
//     variables (below) for the name of the style to edit
74

  
75

  
76

  
77
////////////////////////////////////////////////////////////////////////////////
78
//  Edit these variables to define the content that will be loaded into the 
79
//  various iframes. Each may be a relative path to another page on the local 
80
//  site, or a full URL to a page on a remote server, or may be set to the empty 
81
//  string if no content is required at that position on the page (and in which  
82
//  case an iframe will not be drawn, although an empty table cell will still  
83
//  exist unless it is resized smaller) . 
84
//  ( e.g. if you do not want a header to be included, set: HEADER_URL="";)
85
////////////////////////////////////////////////////////////////////////////////
86

  
87
//NOTE: for KNB skin, these file locations are set to the ROOT web application path
88

  
89
//  Location of the header that will be displayed at the top of the page
90
var HEADER_URL 
91
  = "/includes/include_portalhead_page.jsp";
92

  
93
// Location of the search box that will be displayed above the  
94
//  results on the results page (optional)
95
var SEARCHBOX_URL 
96
  = "/includes/include_searchbox_page.jsp";
97

  
98
//  Location of the header that will be displayed at the top of the page
99
var LEFTCOL_URL 
100
  = "";
101
  
102
//  Location of the header that will be displayed at the top of the page
103
var RIGHTCOL_URL 
104
  = "";
105
  
106
//  Location of the header that will be displayed at the top of the page
107
var FOOTER_URL 
108
  = "";
109
  
110

  
111

  
112

  
113
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
114
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
115
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
116
/* * * * * * * * *  MAY CHANGE THE FOLLOWING, BUT SHOULDN'T NEED TO* * * * * */ 
117
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
118
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
119
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
120

  
121
  
122
////////////////////////////////////////////////////////////////////////////////
123
//  Edit the default.css file to set the correct iframe sizes to accomodate the 
124
//  header, footer, left and right areas.
125
//  The following variables set the names of the styles that will be applied to 
126
//  each of the iframes - they can be anythign you wish, provided you use the 
127
//  same names for your classes in the css file
128
//  NOTE: these styles apply only to each container frame, *NOT* to the document 
129
//  within it!
130
////////////////////////////////////////////////////////////////////////////////
131

  
132
//header iframe class
133
var IFRAME_HEADER_CLASS         = "iframeheaderclass";
134

  
135
//(metacat only) search box iframe class
136
var IFRAME_SEARCHBOX_CLASS      = "iframesearchboxclass";
137

  
138
//left column iframe class
139
var IFRAME_LEFTCOL_CLASS        = "iframeleftcolclass";
140

  
141
//right column iframe class
142
var IFRAME_RIGHTCOL_CLASS       = "iframerightcolclass";
143

  
144
//footer iframe class
145
var IFRAME_FOOTER_CLASS         = "iframefooterclass";
146

  
147

  
148
////////////////////////////////////////////////////////////////////////////////
149
//  Edit the default.css file to set the correct table sizes to accomodate the 
150
//  header, footer, left and right iframes.
151
//  The following variables set the names of the styles that will be applied to 
152
//  each of the table cells (or the table itself - see below) - they can be 
153
//  anything you wish, provided you use the same names for your classes in the 
154
//  css file
155
//  NOTE: these styles apply only to each table cell, *NOT* to the document 
156
//  inside the iframe that is nested within it! (the exception is 
157
//  TEMPLATE_CONTENTAREA_CLASS, since the content probably isn't within an 
158
//  iframe - so style elements in this class will apply to the content istelf)
159
////////////////////////////////////////////////////////////////////////////////
160

  
161
//entire table class
162
var TEMPLATE_TABLE_CLASS        = "templatetableclass";
163

  
164
//header table-cell class. Note you should not set css "width" on this, since it 
165
//includes a colspan
166
var TEMPLATE_HEADERROW_CLASS    = "templateheaderrowclass";
167

  
168
//left column table-cell class. Note that restricting css "height" on this may 
169
//affect visibility of the main content, since it's in the same table row 
170
var TEMPLATE_LEFTCOL_CLASS      = "templateleftcolclass";
171

  
172
//main central content table-cell class. Note that css attributes set here may 
173
//apply to the content nested inside this cell
174
var TEMPLATE_CONTENTAREA_CLASS  = "templatecontentareaclass";
175

  
176
//rigth column table-cell class. Note that restricting css "height" on this may 
177
//affect visibility of the main content, since it's in the same table row 
178
var TEMPLATE_RIGHTCOL_CLASS     = "templaterightcolclass";
179

  
180
//footer table-cell class. Note you should not set "width" on this, since it 
181
//includes a colspan
182
var TEMPLATE_FOOTERROW_CLASS    = "templatefooterrowclass";
183

  
184

  
0 185

  
lib/style/skins/sms/jquery-1.2.6.min.js
1
/*
2
 * jQuery 1.2.6 - New Wave Javascript
3
 *
4
 * Copyright (c) 2008 John Resig (jquery.com)
5
 * Dual licensed under the MIT (MIT-LICENSE.txt)
6
 * and GPL (GPL-LICENSE.txt) licenses.
7
 *
8
 * $Date$
9
 * $Rev: 5685 $
10
 */
11
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
12
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
13
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
14
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
15
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
16
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
17
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
18
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
19
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
20
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
21
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
22
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
23
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
24
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
25
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
26
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
27
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
28
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
29
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
30
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
31
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
32
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
0 33

  

Also available in: Unified diff