From bad95c34f43cd2392047d19d5e26c98c13c45e8b Mon Sep 17 00:00:00 2001 From: Brian Moe <brian.moe@ligo.org> Date: Thu, 14 Jan 2010 17:53:31 -0600 Subject: [PATCH] Stab at javascript-y sortable / page-able search results --- gracedb/urls.py | 2 +- gracedb/views.py | 122 +- static/css/flexigrid/flexigrid.css | 726 ++++++++++ static/css/flexigrid/images/bg.gif | Bin 0 -> 854 bytes static/css/flexigrid/images/btn-sprite.gif | Bin 0 -> 955 bytes static/css/flexigrid/images/ddn.png | Bin 0 -> 111 bytes static/css/flexigrid/images/dn.png | Bin 0 -> 220 bytes static/css/flexigrid/images/fhbg.gif | Bin 0 -> 836 bytes static/css/flexigrid/images/first.gif | Bin 0 -> 217 bytes static/css/flexigrid/images/hl.png | Bin 0 -> 189 bytes static/css/flexigrid/images/last.gif | Bin 0 -> 220 bytes static/css/flexigrid/images/line.gif | Bin 0 -> 817 bytes static/css/flexigrid/images/load.gif | Bin 0 -> 1737 bytes static/css/flexigrid/images/load.png | Bin 0 -> 827 bytes static/css/flexigrid/images/magnifier.png | Bin 0 -> 615 bytes static/css/flexigrid/images/next.gif | Bin 0 -> 185 bytes static/css/flexigrid/images/prev.gif | Bin 0 -> 186 bytes static/css/flexigrid/images/up.png | Bin 0 -> 224 bytes static/css/flexigrid/images/uup.png | Bin 0 -> 130 bytes static/css/flexigrid/images/wbg.gif | Bin 0 -> 868 bytes static/js/flexigrid.js | 1486 ++++++++++++++++++++ static/js/jquery-1.3.2.min.js | 19 + templates/gracedb/event_list.html | 81 +- 23 files changed, 2408 insertions(+), 28 deletions(-) create mode 100755 static/css/flexigrid/flexigrid.css create mode 100755 static/css/flexigrid/images/bg.gif create mode 100755 static/css/flexigrid/images/btn-sprite.gif create mode 100755 static/css/flexigrid/images/ddn.png create mode 100755 static/css/flexigrid/images/dn.png create mode 100755 static/css/flexigrid/images/fhbg.gif create mode 100755 static/css/flexigrid/images/first.gif create mode 100755 static/css/flexigrid/images/hl.png create mode 100755 static/css/flexigrid/images/last.gif create mode 100755 static/css/flexigrid/images/line.gif create mode 100755 static/css/flexigrid/images/load.gif create mode 100755 static/css/flexigrid/images/load.png create mode 100755 static/css/flexigrid/images/magnifier.png create mode 100755 static/css/flexigrid/images/next.gif create mode 100755 static/css/flexigrid/images/prev.gif create mode 100755 static/css/flexigrid/images/up.png create mode 100755 static/css/flexigrid/images/uup.png create mode 100755 static/css/flexigrid/images/wbg.gif create mode 100755 static/js/flexigrid.js create mode 100644 static/js/jquery-1.3.2.min.js diff --git a/gracedb/urls.py b/gracedb/urls.py index 969bd3c13..a6a0520b9 100644 --- a/gracedb/urls.py +++ b/gracedb/urls.py @@ -6,7 +6,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('gracedb.gracedb.views', url (r'^$', 'index', name="home"), url (r'^create/$', 'create', name="create"), - url (r'^search/$', 'search', name="search"), + url (r'^search/(?P<format>(json|flex))?$', 'search', name="search"), url (r'^view/(?P<graceid>[\w\d]+)', 'view', name="view"), # (r'^view/(?P<uid>[\w\d]+)', 'view'), diff --git a/gracedb/views.py b/gracedb/views.py index fd1a0abdf..10acbe57b 100644 --- a/gracedb/views.py +++ b/gracedb/views.py @@ -17,6 +17,8 @@ from translator import handle_uploaded_data import os +import simplejson + def index(request): # assert request.ligouser return render_to_response( @@ -398,12 +400,45 @@ def cli_search(request): response.write(msg) return response -def search(request): +def search(request, format=""): assert request.ligouser # XXX DO NOT HARDCODE THIS # Also, user should be notified if their result hits this limit. limit = 1000 form2 = None + + if format == "frex": + response = HttpResponse(mimetype='application/json') + rows = [ + { 'id': 1, 'cell': + [ "G0966", "", "CBC", "MBTAOnline", 9382382, "Data Wiki", "today!"] + }, + { 'id': 2, 'cell': + [ "G0967", "", "CBC", "MBTAOnline", 9382382, "Data Wiki", "today!"] + }, + { 'id': 3, 'cell': + [ "G0968", "", "CBC", "MBTAOnline", 9382382, "Data Wiki", "today!"] + }, + ] + d = { + 'page': 1, #self.page, + 'total': 1, #p.count, + 'rows': rows + } + msg = simplejson.dumps(d) + response['Content-length'] = len(msg) + response.write(msg) + + query = request.POST['query'] + + f = open('/tmp/foo', 'a') + f.write('hello\n') + f.write(str(request.POST)) + f.write("query is: %s\n" % request.POST['query']) + f.write('\n\n') + f.close() + return response + if request.method == "GET" and "query" not in request.GET: form = SimpleSearchForm() form2 = EventSearchForm() @@ -418,18 +453,28 @@ def search(request): rawquery = request.POST['query'] if form.is_valid(): query = form.cleaned_data['query'] - objects = Event.objects.filter(query).distinct()[:limit] - if objects.count() >= limit: - request.session['flash_msg'] = \ - "Number of events in results exceeds maximum (%s) allowed." % limit - context = { - 'title':"Query Results. %s event(s)" % objects.count(), - 'form': form, - 'formAction': reverse(search), - 'maxCount': limit, - 'queryLink': reverse(search)+"?query="+escape(rawquery), - } - return object_list(request, objects, extra_context=context) + + objects = Event.objects.filter(query).distinct() + + if format == "json": + return HttpResponse("Not Implemented") + if format == "flex": + # Flexigrid request. + return flexigridResponse(request, objects) + else: + objects = objects[:limit] + if objects.count() >= limit: + request.session['flash_msg'] = \ + "Number of events in results exceeds maximum (%s) allowed." % limit + context = { + 'title':"Query Results. %s event(s)" % objects.count(), + 'form': form, + 'formAction': reverse(search), + 'maxCount': limit, + 'queryLink': reverse(search)+"?query="+escape(rawquery), + 'rawquery' : rawquery, + } + return object_list(request, objects, extra_context=context) return render_to_response('gracedb/query.html', { 'form' : form, 'form2' : form2, @@ -559,6 +604,57 @@ def timeline(request): #----------------------------------------------------------------- # Things that aren't views and should really be elsewhere. #----------------------------------------------------------------- +def flexigridResponse(request, objects): + response = HttpResponse(mimetype='application/json') + + sortname = request.POST.get('sortname', None) + sortorder = request.POST.get('sortorder', 'desc') + page = int(request.POST.get('page', 1)) + rp = int(request.POST.get('rp', 10)) + + if sortname: + if sortorder == "desc": + sortname = "-" + sortname + objects = objects.order_by(sortname) + + start = (page-1) * rp + rows = [] + for object in objects[start:start+rp]: + rows.append( + { 'id' : object.id, + 'cell': [ '<a href="%s">%s</a>' % + (reverse(view, args=[object.graceid()]), object.graceid()), + " ".join(['<span title="%s %s" style="color: %s">%s</span>' % + (label.creator.name, label.created, label.label.defaultColor, label.label.name) + for label in object.labelling_set.all() + ]), + object.group.name, + object.get_analysisType_display(), + object.gpstime, + #'<a href="#">Hello Links</a>', + + '<a href="%s">Data</a> <a href="%s">Wiki</a>' % + (object.weburl(), object.wikiurl()), + str(object.created), + ] + } + ) + d = { + 'page': page, + 'total': objects.count(), + 'rows': rows, + } + try: + msg = simplejson.dumps(d) + except Exception, e: + # XXX Not right not right not right. + msg = "{}" + response['Content-length'] = len(msg) + response.write(msg) + + query = request.POST['query'] + + return response def get_logfile(graceid): dirPrefix = "/mnt/gracedb-web/data" diff --git a/static/css/flexigrid/flexigrid.css b/static/css/flexigrid/flexigrid.css new file mode 100755 index 000000000..df96f097f --- /dev/null +++ b/static/css/flexigrid/flexigrid.css @@ -0,0 +1,726 @@ +@charset "UTF-8"; +/* CSS Document */ + +.flexigrid + { + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + position: relative; + border: 0px solid #eee; + overflow: hidden; + color: #000; + } + + .flexigrid.hideBody + { + height: 26px !important; + border-bottom: 1px solid #ccc; + } + + .ie6fullwidthbug + { + border-right: 0px solid #ccc; + padding-right: 2px; + } + +.flexigrid div.nDiv + { + background: #eee url(images/line.gif) repeat-y -1px top; + border: 1px solid #ccc; + border-top: 0px; + overflow: auto; + left: 0px; + position: absolute; + z-index: 999; + float: left; + } + + .flexigrid div.nDiv table + { + margin: 2px; + } + +.flexigrid div.hDivBox + { + float: left; + padding-right: 40px; + } + +.flexigrid div.bDiv table + { + margin-bottom: 10px; + } + + .flexigrid div.bDiv table.autoht + { + border-bottom: 0px; + margin-bottom: 0px; + } + +.flexigrid div.nDiv td + { + padding: 2px 3px; + border: 1px solid #eee; + cursor: default; + } + +.flexigrid div.nDiv tr:hover td, .flexigrid div.nDiv tr.ndcolover td + { + background: #d5effc url(images/hl.png) repeat-x top; + border: 1px solid #a8d8eb; + } + + .flexigrid div.nDiv td.ndcol1 + { + border-right: 1px solid #ccc; + } + + .flexigrid div.nDiv td.ndcol2 + { + border-left: 1px solid #fff; + padding-right: 10px; + } + + .flexigrid div.nDiv tr:hover td.ndcol1, .flexigrid div.nDiv tr.ndcolover td.ndcol1 + { + border-right: 1px solid #d2e3ec; + } + + .flexigrid div.nDiv tr:hover td.ndcol2, .flexigrid div.nDiv tr.ndcolover td.ndcol2 + { + border-left: 1px solid #eef8ff; + } + + .flexigrid div.nBtn + { + position: absolute; + height: 24px; + width: 14px; + z-index: 900; + background: #fafafa url(images/fhbg.gif) repeat-x bottom; + border: 0px solid #ccc; + border-left: 1px solid #ccc; + top: 0px; + left: 0px; + margin-top: 1px; + cursor: pointer; + display: none; + } + + .flexigrid div.nBtn div + { + height: 24px; + width: 12px; + border-left: 1px solid #fff; + float: left; + background: url(images/ddn.png) no-repeat center; + } + + .flexigrid div.nBtn.srtd + { + background: url(images/wbg.gif) repeat-x 0px -1px; + } + + +.flexigrid div.mDiv + { + background: url(images/wbg.gif) repeat-x top; + border: 1px solid #ccc; + border-bottom: 0px; + border-top: 0px; + font-weight: bold; + display: block; + overflow: hidden; + white-space: nowrap; + position: relative; + } + +.flexigrid div.mDiv div + { + padding: 6px; + white-space: nowrap; + } + + .flexigrid div.mDiv div.ptogtitle + { + position: absolute; + top: 4px; + right: 3px; + padding: 0px; + height: 16px; + width: 16px; + overflow: hidden; + border: 1px solid #ccc; + cursor: pointer; + } + + .flexigrid div.mDiv div.ptogtitle:hover + { + background-position: left -2px; + border-color: #bbb; + } + + .flexigrid div.mDiv div.ptogtitle span + { + display: block; + border-left: 1px solid #eee; + border-top: 1px solid #fff; + border-bottom: 1px solid #ddd; + width: 14px; + height: 14px; + background: url(images/uup.png) no-repeat center; + } + + .flexigrid div.mDiv div.ptogtitle.vsble span + { + background: url(images/ddn.png) no-repeat center; + } + +.flexigrid div.tDiv /*toolbar*/ + { + background: #fafafa url(images/bg.gif) repeat-x top; + position: relative; + border: 1px solid #ccc; + border-bottom: 0px; + overflow: hidden; + } + + .flexigrid div.tDiv2 + { + float: left; + clear: both; + padding: 1px; + } + +.flexigrid div.sDiv /*toolbar*/ + { + background: #fafafa url(images/bg.gif) repeat-x top; + position: relative; + border: 1px solid #ccc; + border-top: 0px; + overflow: hidden; + display: none; + } + + .flexigrid div.sDiv2 + { + float: left; + clear: both; + padding: 5px; + padding-left: 5px; + width: 1024px; + } + + .flexigrid div.sDiv2 input, .flexigrid div.sDiv2 select + { + vertical-align: middle; + } + + .flexigrid div.btnseparator + { + float: left; + height: 22px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 1px; + } + + .flexigrid div.fbutton + { + float: left; + display: block; + cursor: pointer; + padding: 1px; + } + + .flexigrid div.fbutton div + { + float: left; + padding: 1px 3px; + } + + .flexigrid div.fbutton span + { + float: left; + display: block; + padding: 3px; + } + + .flexigrid div.fbutton:hover, .flexigrid div.fbutton.fbOver + { + padding: 0px; + border: 1px solid #ccc; + } + + .flexigrid div.fbutton:hover div, .flexigrid div.fbutton.fbOver div + { + padding: 0px 2px; + border-left: 1px solid #fff; + border-top: 1px solid #fff; + border-right: 1px solid #eee; + border-bottom: 1px solid #eee; + } + + +/* end toolbar*/ + +.flexigrid div.hDiv + { + background: #fafafa url(images/fhbg.gif) repeat-x bottom; + position: relative; + border: 1px solid #ccc; + border-bottom: 0px; + overflow: hidden; + } + +.flexigrid div.hDiv table + { + border-right: 1px solid #fff; + } + + .flexigrid div.cDrag + { + float: left; + position: absolute; + z-index: 2; + overflow: visible; + } + + .flexigrid div.cDrag div + { + float: left; + background: none; + display: block; + position: absolute; + height: 24px; + width: 5px; + cursor: col-resize; + } + + .flexigrid div.cDrag div:hover, .flexigrid div.cDrag div.dragging + { + background: url(images/line.gif) repeat-y 2px center; + } + +.flexigrid div.iDiv + { + border: 1px solid #316ac5; + position: absolute; + overflow: visible; + background: none; + } + + .flexigrid div.iDiv input, .flexigrid div.iDiv select, .flexigrid div.iDiv textarea + { + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + } + + .flexigrid div.iDiv input.tb + { + border: 0px; + padding: 0px; + width: 100%; + height: 100%; + padding: 0px; + background: none; + } + +.flexigrid div.bDiv + { + border: 1px solid #ccc; + border-top: 0px; + background: #fff; + overflow: auto; + position: relative; + } + +.flexigrid div.bDiv table + { + border-bottom: 1px solid #ccc; + } + + .flexigrid div.hGrip + { + position: absolute; + top: 0px; + right: 0px; + height: 5px; + width: 5px; + background: url(images/line.gif) repeat-x center; + margin-right: 1px; + cursor: col-resize; + } + + .flexigrid div.hGrip:hover, .flexigrid div.hGrip.hgOver + { + border-right: 1px solid #999; + margin-right: 0px; + } + + .flexigrid div.vGrip + { + height: 5px; + overflow: hidden; + position: relative; + background: #fafafa url(images/wbg.gif) repeat-x 0px -1px; + border: 1px solid #ccc; + border-top: 0px; + text-align: center; + cursor: row-resize; + } + + .flexigrid div.vGrip span + { + display: block; + margin: 1px auto; + width: 20px; + height: 1px; + overflow: hidden; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + background: none; + } + +.flexigrid div.hDiv th, .flexigrid div.bDiv td /* common cell properties*/ + { + text-align: left; + border-right: 1px solid #ddd; + border-left: 1px solid #fff; + overflow: hidden; + vertical-align: top !important; + } + + .flexigrid div.hDiv th div, .flexigrid div.bDiv td div, div.colCopy div/* common inner cell properties*/ + { + padding: 5px; + border-left: 0px solid #fff; + } + +.flexigrid div.hDiv th, div.colCopy + { + font-weight: normal; + height: 24px; + cursor: default; + white-space: nowrap; + overflow: hidden; + } + +div.colCopy { + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + background: #fafafa url(images/fhbg.gif) repeat-x bottom; + border: 1px solid #ccc; + border-bottom: 0px; + overflow: hidden; + } + +.flexigrid div.hDiv th.sorted + { + background: url(images/wbg.gif) repeat-x 0px -1px; + border-bottom: 0px solid #ccc; + } + + .flexigrid div.hDiv th.thOver + { + } + + .flexigrid div.hDiv th.thOver div, .flexigrid div.hDiv th.sorted.thOver div + { + border-bottom: 1px solid orange; + padding-bottom: 4px; + } + + .flexigrid div.hDiv th.sorted div + { + border-bottom: 0px solid #ccc; + padding-bottom: 5px; + } + + .flexigrid div.hDiv th.thMove + { + background: #fff; + color: #fff; + } + + .flexigrid div.hDiv th.sorted.thMove div + { + border-bottom: 1px solid #fff; + padding-bottom: 4px + } + + .flexigrid div.hDiv th.thMove div + { + background: #fff !important; + } + + .flexigrid div.hDiv th div.sdesc + { + background: url(images/dn.png) no-repeat center top; + } + + .flexigrid div.hDiv th div.sasc + { + background: url(images/up.png) no-repeat center top; + } + +.flexigrid div.bDiv td + { + border-bottom: 1px solid #fff; + vertical-align: top; + white-space: nowrap; + } + + .flexigrid div.hDiv th div + { + } + + .flexigrid span.cdropleft + { + display: block; + background: url(images/prev.gif) no-repeat -4px center; + width: 24px; + height: 24px; + position: relative; + top: -24px; + margin-bottom: -24px; + z-index: 3; + } + + .flexigrid div.hDiv span.cdropright + { + display: block; + background: url(images/next.gif) no-repeat 12px center; + width: 24px; + height: 24px; + float: right; + position: relative; + top: -24px; + margin-bottom: -24px; + } + + + .flexigrid div.bDiv td div + { + border-top: 0px solid #fff; + padding-bottom: 4px; + } + + + .flexigrid tr td.sorted + { + background: #f3f3f3; + border-right: 1px solid #ddd; + border-bottom: 1px solid #f3f3f3; + } + + .flexigrid tr td.sorted div + { + } + + + .flexigrid tr.erow td + { + background: #f7f7f7; + border-bottom: 1px solid #f7f7f7; + } + + .flexigrid tr.erow td.sorted + { + background: #e3e3e3; + border-bottom: 1px solid #e3e3e3; + } + + .flexigrid tr.erow td.sorted div + { + } + + .flexigrid div.bDiv tr:hover td, + .flexigrid div.bDiv tr:hover td.sorted, + .flexigrid div.bDiv tr.trOver td.sorted, + .flexigrid div.bDiv tr.trOver td + { + background: #d9ebf5; + border-left: 1px solid #eef8ff; + border-bottom: 1px dotted #a8d8eb; + } + + .flexigrid div.bDiv tr.trSelected:hover td, + .flexigrid div.bDiv tr.trSelected:hover td.sorted, + .flexigrid div.bDiv tr.trOver.trSelected td.sorted, + .flexigrid div.bDiv tr.trOver.trSelected td, + .flexigrid tr.trSelected td.sorted, + .flexigrid tr.trSelected td + { + background: #d5effc url(images/hl.png) repeat-x top; + border-right: 1px solid #d2e3ec; + border-left: 1px solid #eef8ff; + border-bottom: 1px solid #a8d8eb; + } + + /* novstripe adjustments */ + + .flexigrid.novstripe .bDiv table + { + border-bottom: 1px solid #ccc; + border-right: 1px solid #ccc; + } + + .flexigrid.novstripe div.bDiv td + { + border-right-color: #fff; + } + + .flexigrid.novstripe div.bDiv tr.erow td.sorted + { + border-right-color: #e3e3e3; + } + + .flexigrid.novstripe div.bDiv tr td.sorted + { + border-right-color: #f3f3f3; + } + + .flexigrid.novstripe div.bDiv tr.erow td + { + border-right-color: #f7f7f7; + border-left-color: #f7f7f7; + } + + .flexigrid.novstripe div.bDiv tr.trSelected:hover td, + .flexigrid.novstripe div.bDiv tr.trSelected:hover td.sorted, + .flexigrid.novstripe div.bDiv tr.trOver.trSelected td.sorted, + .flexigrid.novstripe div.bDiv tr.trOver.trSelected td, + .flexigrid.novstripe tr.trSelected td.sorted, + .flexigrid.novstripe tr.trSelected td + { + border-right: 1px solid #0066FF; + border-left: 1px solid #0066FF; + } + + .flexigrid.novstripe div.bDiv tr.trOver td, .flexigrid.novstripe div.bDiv tr:hover td + { + border-left-color: #d9ebf5; + border-right-color: #d9ebf5; + } + + /* end novstripe */ + +.flexigrid div.pDiv + { + background: url(images/wbg.gif) repeat-x 0 -1px; + border: 1px solid #ccc; + border-top: 0px; + overflow: hidden; + white-space: nowrap; + position: relative; + } + +.flexigrid div.pDiv div.pDiv2 + { + margin: 3px; + margin-left: -2px; + float: left; + width: 1024px; + } + + div.pGroup + { + float: left; + background: none; + height: 24px; + margin: 0px 5px; + } + + .flexigrid div.pDiv .pPageStat, .flexigrid div.pDiv .pcontrol + { + position: relative; + + top: 5px; + overflow: visible; + } + + .flexigrid div.pDiv input + { + vertical-align: text-top; + position: relative; + top: -5px; + } + + .flexigrid div.pDiv div.pButton + { + float: left; + width: 22px; + height: 22px; + border: 0px; + cursor: pointer; + overflow: hidden; + } + + .flexigrid div.pDiv div.pButton:hover, .flexigrid div.pDiv div.pButton.pBtnOver + { + width: 20px; + height: 20px; + border: 1px solid #ccc; + cursor: pointer; + } + + .flexigrid div.pDiv div.pButton span + { + width: 20px; + height: 20px; + display: block; + float: left; + } + + .flexigrid div.pDiv div.pButton:hover span, .flexigrid div.pDiv div.pButton.pBtnOver span + { + width: 19px; + height: 19px; + border-top: 1px solid #fff; + border-left: 1px solid #fff; + } + + + .flexigrid .pSearch + { + background: url(images/magnifier.png) no-repeat center; + } + + .flexigrid .pFirst + { + background: url(images/first.gif) no-repeat center; + } + + .flexigrid .pPrev + { + background: url(images/prev.gif) no-repeat center; + } + + .flexigrid .pNext + { + background: url(images/next.gif) no-repeat center; + } + + .flexigrid .pLast + { + background: url(images/last.gif) no-repeat center; + } + + .flexigrid .pReload + { + background: url(images/load.png) no-repeat center; + } + + .flexigrid .pReload.loading + { + background: url(images/load.gif) no-repeat center; + } + +/* ie adjustments */ + + .flexigrid.ie div.hDiv th div, .flexigrid.ie div.bDiv td div, div.colCopy.ie div/* common inner cell properties*/ + { + overflow: hidden; + } + \ No newline at end of file diff --git a/static/css/flexigrid/images/bg.gif b/static/css/flexigrid/images/bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..9ab78a2ec788d6dfbbcd6212a4d3b1d9917d55e7 GIT binary patch literal 854 zcmZ?wbhEHbWMZ&jXlGz}_Uzg7=g(ifc=7V(%U7>ny?*`r&6_uG-@bkK?%n(M?>~I_ z@c;jRhEXsY0>d-}6o0Y+efFP02jo9co?zfGW)Rn5a1d~4Xl7*5h_P7kkby}+S!_nc jfrg{q>_&192R0@*^>d1J$arpAa&odp@G2Wg0S0RTW*Ik7 literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/btn-sprite.gif b/static/css/flexigrid/images/btn-sprite.gif new file mode 100755 index 0000000000000000000000000000000000000000..e827ba35728adaadfea417b20b4727a859ae770a GIT binary patch literal 955 zcmZ?wbhEHbWM;5u_|Cw<U{k{IpTXh3Ls<8br_&jJY%=I*Yg@Z^ZO^6~`!2uyd!zHh zg$sA?+_`t}-nsklFFyQm<?+YsPd?pv`sw!b&-Y$_x&P|x{}1OMJb3Wv(WA$YA3uHi z^!fAWkDtGO@#4kHmoHzxe*Nano40S@zI*rX;p?xD-+p`g?)$U%-(P(A@$cW?|NsB~ z`}hCf|NsAC6p#sY(I^-V0lI~N;!hSv1_nk39gvNnJi)**gMpdF!XV%%qqr2`0)aw< zBaC7Se0zQ<Tx>qVCuHv7^FyiGrC;B`V~@f{N6$_kz9kU`8(JNhS(qhw794D46x85p z*}&P<+Q_fZQ^9dd@kQGLsiw35DG}!j+>X*Nyr&diG>Nc9NpNf^eZbhMAD1Day(p(+ sv%;mih}R2q+qX+U>bp8&;ksC!3jG(k2e#`s@8@P}=gm6c;J{!F06~?tlmGw# literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/ddn.png b/static/css/flexigrid/images/ddn.png new file mode 100755 index 0000000000000000000000000000000000000000..2178f11e327167c25acfb35264b03dd87b9486b4 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#%#0(_QEuNMPq&Ne7LR^6~5JW~sygPna1;}D7 z3GxeOaCmkj4agDkba4!+xRpFZ>evFQg9m0FIB<o5fqw#1h&RV~bC5nyS3j3^P6<r_ DHsu`r literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/dn.png b/static/css/flexigrid/images/dn.png new file mode 100755 index 0000000000000000000000000000000000000000..a19083be7668600f73e056a625262c6f2bd2ff70 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!3-ozC9e7dDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MFs&rA+EKxwMUK|$<58(vSmwOU!RMM%lh@}Po6y4-`~G; z=gyv<o@vvjZP>73!GZ->u3Y*5|9@k!)E}T;fs!D<U?3M6Fg#F>l?2MEdAc};RNP8R zNPUp>F!gcbgY-wwQl39ffAIWy!js4B7yq1b;1Nh*5J+RxDZkxN0@T6a>FVdQ&MBb@ E04CC4Q~&?~ literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/fhbg.gif b/static/css/flexigrid/images/fhbg.gif new file mode 100755 index 0000000000000000000000000000000000000000..8d459a304e0b224f8c28d6b7b585da7019d28cce GIT binary patch literal 836 zcmZ?wbhEHbWMYtDXlG!!aN)x1H}BrOegF2|hj;HkzW?y)!^h7bKYjW6^C!b77!85p z9s-I#S%6;r&!7YHC@4=ba40eea>#gWNI1yM!7mYUVnf4WCKe8!85Rx=4Ga>@3=9GS G4Auam1ttan literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/first.gif b/static/css/flexigrid/images/first.gif new file mode 100755 index 0000000000000000000000000000000000000000..7623e7387a1db305267e63826400a23bf4298dee GIT binary patch literal 217 zcmV;~04D!ONk%w1VGsZi0K^RdBuJ1gQ=T(frax%6EN0j^Zrne0-7InLL~p=CZPZG2 z$VhtMPJ7}1|Nm2f)=`7uR)pzai{N04<Y<)TZ<g$BndWDl`*E7*exL4wpy!RN@QAMe zmbCAozVM>G|Ek3AA^8LW000dDEC2ui01yBW000G6U?YxXX`bhlT_#&TUsXnO>2wnr zdAZF=qr}DoEGaY*QNm*3Bufa)qah$1EShO)Kv{?Y){D0!pcqEr$C)fCkN^pHDF7jq Tz$O60UgE#uD1m~5Bq0Dh8K_|4 literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/hl.png b/static/css/flexigrid/images/hl.png new file mode 100755 index 0000000000000000000000000000000000000000..6248e45dfe83355a94b9ccac57f557a760b003c3 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!3-oHI6iF!Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiVOmLLR{~C`t$zB-|O%HTz&uN+1J0XzWsgi?eClKe?R>A zd+q(7hoAr4`taw;=f8J8{`vUh@3-H7^W;8E0qRxuba4!+xW#gim61V#fkENTwg367 n=dZH*2BzLVveCu)7ZVQyM+8Hq(5Z@YpmGLJS3j3^P6<r_8--Qa literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/last.gif b/static/css/flexigrid/images/last.gif new file mode 100755 index 0000000000000000000000000000000000000000..61483e998b141b8b137506dabf4338b045afa13d GIT binary patch literal 220 zcmV<203-iLNk%w1VGsZi0K^RdBuJ1gQ=T(frax%6EN0j^Zrne0-7InLL~p=CZPZG2 z$VhtMPJ7}1|Nm2f)=`7uR)pzai{N04<Y<)TZ<g$BndWDl`*E7*exL4wpy!RN@QAMe zmbCAozVM>G|Ek3AA^8LW000dDEC2ui01yBW000G9U?YxXX`bh0UfE<;QCWSDIeGCo zb&e@{o5V=M>6IcJi$&OoXcVT0#&RGC8V?M@w766Oq6KAOGCT-ik%4k86%uJtLDD9n WO9V*3MBp>xC?arxfrW+*Apkq35Mp)! literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/line.gif b/static/css/flexigrid/images/line.gif new file mode 100755 index 0000000000000000000000000000000000000000..c76a16e95997a487ee9cd1675ecdd99bd2f37c17 GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlGzpvts7||Nj|A!DtAK$PiHc$pZBEe+C_p??HKjfrF2Mkww6x PV8OvA4t_Qc4hCxg>zoX) literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/load.gif b/static/css/flexigrid/images/load.gif new file mode 100755 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 GIT binary patch literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ z<hX^95c&;*o;-OHo7Xvc^)~y#dC%s-f^{D_{YP51273B0UY)snU|=eH^*)WO+gP*T z(s0P(JG}1Qp%bImGs<?iZTs~0-G_JXe>ZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4<Hc*=d=$8H@4=%B zmv7D7dT?##?)VosKb!pe<mmM;XYXCQ{>{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z<v5~qci$vd*_~Xn)7o%o{q_;PyGNS8y>)9Kt9)<erlbBX!*A{R4Eiq#e}y~q$WjYl zoTtiAhRl09Pxv#=(&}-ydFo^vn%Wv=Zm)Zz&+o3wXlkzaLkWL`3c{Xlr9EqSCK2Lo zdm92&2Te;7m!>l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5Hm<YoOyErZg~zU z2#apwy3#ldWZ@NXqax==czv|S)zDaiAeQB8BlwiO&Z%b_(~BjbR#?wM!gW<3E!r4# zG<$){t_+eH=|Gx|2I-f?wy!#>J(eJ*rQrDbaawDbrfe_8<D^=xgfkJ0Hd&G_W?W~= zyw4B<N$c;j1t%&-Omoq7J*Ue}mI|E-J{tq&h<Qm18&-Rr4jNCi`y_<HToqNMr$~iL z!_==?rUN-;$t+}#2my{XK~S`ICGgd2gYbeC!0)@nk}tM`7=2C9v918vl8r%UN+KYt zHFEal`8btXog-HQ^{-G14d-zLa?*fe%|G|bh=><r=lPc|g86eX{-+pr`#n;HD3^f* zsVyFHwmn)ELtFJ>F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^<!Tq6)_F zODqz}4RDk}%X$|;1mkRbYY4z<a&OYo@}(RKC1I3GO?o9fjK&D17GyNH@q^78RC(dn z00sVEvC@>2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9<!2s)DE&`+# zWg#Q4addc`aPa`rHC31dl!SWRysQpj=qy|1^-=13v?9uBV?t9&vNo%<$ib}N&|H~b z-WscC@x-R^i0kj&`KAB6-Z>S&`&_ZwkgGH5<Vpt8l2!o+H)~4dG=^j%D5OSo$@!)Z zr9sQs;vEQ3qsQ5jdVCmTfi+D(Mx#>CL<gEJ1>B7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/load.png b/static/css/flexigrid/images/load.png new file mode 100755 index 0000000000000000000000000000000000000000..d65defbcb54ab2e3ffb4d12201ca3f6a56182df4 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c#)bf&5Z9?^djJ0WyX4C3S?4G9pKSM^>M`L|hyMi6q(#xs z-aczRQa52w_nh-nW}ctWcdRXBs^88l+t%M$HGALmzLTxp$C`7tq;wu@3Y#8KHm7*Y zxlNNc_Xp4Oc4)H<ob8#nAuVcV$o@NfLgx5ntVo!!t*7^R+x$z@8xNIFJk>S-;<R0l zwuCSCYdv0_yd<{!cx&qNINxcm-G`gAr)Nw%+h^BozUa_==X%?+&G|FV^)I|Mqi%oc zl+!)gYmzryS+iizyd9Uf`gOY}&y8z2UcL0jy!E$NMlT2noaDV||AO4PnNiCE4&C3E zGc&XKNM-lomKEohq^ykf>2=?GbJv^;Q@V~c-}`W9+r=%rukV<2sxxC+%D#s?`%iYn ztqz%Rva@qdd-LJSoVBUD?``*O^m_OG?e1&aYxWi|I63>z-#;5quXpLTop!cAZ*_Xp zp{mulmYlnDcKZ1Vjr*#WU!T{0q#<Kf;*?zz%&U!z%k&nUp53^#&b`~={g1a(Hcje0 z+%WIrRI54@uWr}+gO&gP|6j6up)WAP8cKrvf`QzD1Pm6e-swQM9QAZ@45_%4w4$9+ z+Rfl7gZPOjZJZ%4F5OigueA#`oLQQRlMgeku3Q_z^<$|6Q>WV@pJ!)ya+G39{~0PY zR(NyEiQ3MbCG_o<(FU>kT5SqHl@zocnUYq_SJK`s&=ETG)k=X0DaQr01e9hTTfr&x zsWee{d;5;VCj~v06nt=<wX>OZ)7Gntwxq1(jW}}Tt^?D#dp~_vIn3U?qhybTBU95! zDI3XGyDAIUwOI=6pK?lcnY8%qw%bLAY>vNW_^#~IaFIoiK_G$Qo@|7?`$KD9pobVd MUHx3vIVCg!0CQN?vH$=8 literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/magnifier.png b/static/css/flexigrid/images/magnifier.png new file mode 100755 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz`AI}UR5;6} zlD}({VGzf^?~f!#tf`u$5Q9JHQ1uTGDng(|aLClHAP#~!RCnFF2#yY>gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3<CfF literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/next.gif b/static/css/flexigrid/images/next.gif new file mode 100755 index 0000000000000000000000000000000000000000..2cd62ccbfbdb217bf29b803f2bec734d34437f53 GIT binary patch literal 185 zcmV;q07m~uNk%w1VGsZi0K^dhBuJ1bO_nWFo-<jdIAE_oXty0^^)F=4FJ;p(V#q#o z+azl8EOG8Ma_B^Fz)E$<PkYe+|Nm2f)>DMtRfXPIhu=?%_D_lZSBKzVjNxaT`)Hi` zg|7dIuK%LF|E0hGA^8LW000pHEC2ui01yBW000FxU?h%YX`ZNvrKXgzB=o&-^k`pI nI~Vs+u);;t@l03*hDD=*4Hk_<O<+jWA_2rT0@!-LwGaS17qe3C literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/prev.gif b/static/css/flexigrid/images/prev.gif new file mode 100755 index 0000000000000000000000000000000000000000..b440a29ad5b654d8f24509317ff3e6603d967064 GIT binary patch literal 186 zcmV;r07d^tNk%w1VGsZi0K^{vUyR|UzyDQ*-cy9#EOG7~X7w**&xo%7EmNLPd(b3m z@;G3xqP_o5iuQ%B|0GC|FJ;p(V#q{qz&>-^N_EIHS*BQr-&26rSBKy~Xt!va{WNmu zXq@>+g!?E>mjD0%A^8LW0018VEC2ui01yBW000Fy;3tk`X`X0_r6q8&BM>C;X9XGs o3xU%}tO4V|>11FNPJ^(h88(Va?Gq^=rXPq0`+0D`U{eSHJ0!qRy#N3J literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/up.png b/static/css/flexigrid/images/up.png new file mode 100755 index 0000000000000000000000000000000000000000..000c065635f189ba79e3566e1e9dbbdeec126dca GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!3-ozC9e7dDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MaBU>A+A@hT&b<Cy?F8BmMvSRPoM7K;Nb4=e)Z~A7Z;cH z>(}4Bd2{~!`8hc`m6erlZf<AJocaI%KdVa{P&b2MNswPKkc$EsRM*Z-0!pfRx;TbZ z+)5G<5J+H7Vq;|FbCVM|d+PMbGr9*396xmA{DGr<0tpOax{Q{y%M^S-=6SmMxvX<a GXaWGW?paU( literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/uup.png b/static/css/flexigrid/images/uup.png new file mode 100755 index 0000000000000000000000000000000000000000..660db638f243ac884e0b4e71a5170a183011b690 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^96-#%!3HEZpRM}<q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6{&c-IEGZ*N=k5GnmAGLzvB!>=?1R`!#1T9PafABDicK+ bStJ;q-j}gmEMvVDsGh;o)z4*}Q$iB}fe$3! literal 0 HcmV?d00001 diff --git a/static/css/flexigrid/images/wbg.gif b/static/css/flexigrid/images/wbg.gif new file mode 100755 index 0000000000000000000000000000000000000000..8046089a9de7680673de4bc9dbf45ffedf72aa52 GIT binary patch literal 868 zcmZ?wbhEHbWMt4`Y-eD&e*OB58#iv<x^?^Z?K^kw+`D)0!Gi~n9zA;e`0>-HPoF=3 z{^G@pmoHzwe*OB*n>TOYzJ2%Z-G>h!{{R2aFbYOPVCaW{;!hT!C;l_&fV=|A6AT=V z46Gg<3=bQd*?7b>JQ^4dGBUGr2}md?Ff?>a7-!u%v2pS7eg)?)8P7|LTPAA+uZlUj WY3b?d2Fa)9cy3<i!^p_UU=09lSWrU% literal 0 HcmV?d00001 diff --git a/static/js/flexigrid.js b/static/js/flexigrid.js new file mode 100755 index 000000000..d48a8edca --- /dev/null +++ b/static/js/flexigrid.js @@ -0,0 +1,1486 @@ +/* + * Flexigrid for jQuery - New Wave Grid + * + * Copyright (c) 2008 Paulo P. Marinas (webplicity.net/flexigrid) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-07-14 00:09:43 +0800 (Tue, 14 Jul 2008) $ + */ + +(function($){ + + $.addFlex = function(t,p) + { + + if (t.grid) return false; //return if already exist + + // apply default properties + p = $.extend({ + height: 200, //default height + width: 'auto', //auto width + striped: true, //apply odd even stripes + novstripe: false, + minwidth: 30, //min width of columns + minheight: 80, //min height of columns + resizable: true, //resizable table + url: false, //ajax url + method: 'POST', // data sending method + dataType: 'xml', // type of data loaded + errormsg: 'Connection Error', + usepager: false, // + nowrap: true, // + page: 1, //current page + total: 1, //total pages + useRp: true, //use the results per page select box + rp: 15, // results per page + rpOptions: [10,15,20,25,40], + title: false, + pagestat: 'Displaying {from} to {to} of {total} items', + procmsg: 'Processing, please wait ...', + query: '', + qtype: '', + nomsg: 'No items', + minColToggle: 1, //minimum allowed column to be hidden + showToggleBtn: true, //show or hide column toggle popup + hideOnSubmit: true, + autoload: true, + blockOpacity: 0.5, + onToggleCol: false, + onChangeSort: false, + onSuccess: false, + onSubmit: false // using a custom populate function + }, p); + + + $(t) + .show() //show if hidden + .attr({cellPadding: 0, cellSpacing: 0, border: 0}) //remove padding and spacing + .removeAttr('width') //remove width properties + ; + + //create grid class + var g = { + hset : {}, + rePosDrag: function () { + + var cdleft = 0 - this.hDiv.scrollLeft; + if (this.hDiv.scrollLeft>0) cdleft -= Math.floor(p.cgwidth/2); + $(g.cDrag).css({top:g.hDiv.offsetTop+1}); + var cdpad = this.cdpad; + + $('div',g.cDrag).hide(); + + $('thead tr:first th:visible',this.hDiv).each + ( + function () + { + var n = $('thead tr:first th:visible',g.hDiv).index(this); + + var cdpos = parseInt($('div',this).width()); + var ppos = cdpos; + if (cdleft==0) + cdleft -= Math.floor(p.cgwidth/2); + + cdpos = cdpos + cdleft + cdpad; + + $('div:eq('+n+')',g.cDrag).css({'left':cdpos+'px'}).show(); + + cdleft = cdpos; + } + ); + + }, + fixHeight: function (newH) { + newH = false; + if (!newH) newH = $(g.bDiv).height(); + var hdHeight = $(this.hDiv).height(); + $('div',this.cDrag).each( + function () + { + $(this).height(newH+hdHeight); + } + ); + + var nd = parseInt($(g.nDiv).height()); + + if (nd>newH) + $(g.nDiv).height(newH).width(200); + else + $(g.nDiv).height('auto').width('auto'); + + $(g.block).css({height:newH,marginBottom:(newH * -1)}); + + var hrH = g.bDiv.offsetTop + newH; + if (p.height != 'auto' && p.resizable) hrH = g.vDiv.offsetTop; + $(g.rDiv).css({height: hrH}); + + }, + dragStart: function (dragtype,e,obj) { //default drag function start + + if (dragtype=='colresize') //column resize + { + $(g.nDiv).hide();$(g.nBtn).hide(); + var n = $('div',this.cDrag).index(obj); + var ow = $('th:visible div:eq('+n+')',this.hDiv).width(); + $(obj).addClass('dragging').siblings().hide(); + $(obj).prev().addClass('dragging').show(); + + this.colresize = {startX: e.pageX, ol: parseInt(obj.style.left), ow: ow, n : n }; + $('body').css('cursor','col-resize'); + } + else if (dragtype=='vresize') //table resize + { + var hgo = false; + $('body').css('cursor','row-resize'); + if (obj) + { + hgo = true; + $('body').css('cursor','col-resize'); + } + this.vresize = {h: p.height, sy: e.pageY, w: p.width, sx: e.pageX, hgo: hgo}; + + } + + else if (dragtype=='colMove') //column header drag + { + $(g.nDiv).hide();$(g.nBtn).hide(); + this.hset = $(this.hDiv).offset(); + this.hset.right = this.hset.left + $('table',this.hDiv).width(); + this.hset.bottom = this.hset.top + $('table',this.hDiv).height(); + this.dcol = obj; + this.dcoln = $('th',this.hDiv).index(obj); + + this.colCopy = document.createElement("div"); + this.colCopy.className = "colCopy"; + this.colCopy.innerHTML = obj.innerHTML; + if ($.browser.msie) + { + this.colCopy.className = "colCopy ie"; + } + + + $(this.colCopy).css({position:'absolute',float:'left',display:'none', textAlign: obj.align}); + $('body').append(this.colCopy); + $(this.cDrag).hide(); + + } + + $('body').noSelect(); + + }, + dragMove: function (e) { + + if (this.colresize) //column resize + { + var n = this.colresize.n; + var diff = e.pageX-this.colresize.startX; + var nleft = this.colresize.ol + diff; + var nw = this.colresize.ow + diff; + if (nw > p.minwidth) + { + $('div:eq('+n+')',this.cDrag).css('left',nleft); + this.colresize.nw = nw; + } + } + else if (this.vresize) //table resize + { + var v = this.vresize; + var y = e.pageY; + var diff = y-v.sy; + + if (!p.defwidth) p.defwidth = p.width; + + if (p.width != 'auto' && !p.nohresize && v.hgo) + { + var x = e.pageX; + var xdiff = x - v.sx; + var newW = v.w + xdiff; + if (newW > p.defwidth) + { + this.gDiv.style.width = newW + 'px'; + p.width = newW; + } + } + + var newH = v.h + diff; + if ((newH > p.minheight || p.height < p.minheight) && !v.hgo) + { + this.bDiv.style.height = newH + 'px'; + p.height = newH; + this.fixHeight(newH); + } + v = null; + } + else if (this.colCopy) { + $(this.dcol).addClass('thMove').removeClass('thOver'); + if (e.pageX > this.hset.right || e.pageX < this.hset.left || e.pageY > this.hset.bottom || e.pageY < this.hset.top) + { + //this.dragEnd(); + $('body').css('cursor','move'); + } + else + $('body').css('cursor','pointer'); + $(this.colCopy).css({top:e.pageY + 10,left:e.pageX + 20, display: 'block'}); + } + + }, + dragEnd: function () { + + if (this.colresize) + { + var n = this.colresize.n; + var nw = this.colresize.nw; + + $('th:visible div:eq('+n+')',this.hDiv).css('width',nw); + $('tr',this.bDiv).each ( + function () + { + $('td:visible div:eq('+n+')',this).css('width',nw); + } + ); + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + + + $('div:eq('+n+')',this.cDrag).siblings().show(); + $('.dragging',this.cDrag).removeClass('dragging'); + this.rePosDrag(); + this.fixHeight(); + this.colresize = false; + } + else if (this.vresize) + { + this.vresize = false; + } + else if (this.colCopy) + { + $(this.colCopy).remove(); + if (this.dcolt != null) + { + + + if (this.dcoln>this.dcolt) + + $('th:eq('+this.dcolt+')',this.hDiv).before(this.dcol); + else + $('th:eq('+this.dcolt+')',this.hDiv).after(this.dcol); + + + + this.switchCol(this.dcoln,this.dcolt); + $(this.cdropleft).remove(); + $(this.cdropright).remove(); + this.rePosDrag(); + + + } + + this.dcol = null; + this.hset = null; + this.dcoln = null; + this.dcolt = null; + this.colCopy = null; + + $('.thMove',this.hDiv).removeClass('thMove'); + $(this.cDrag).show(); + } + $('body').css('cursor','default'); + $('body').noSelect(false); + }, + toggleCol: function(cid,visible) { + + var ncol = $("th[axis='col"+cid+"']",this.hDiv)[0]; + var n = $('thead th',g.hDiv).index(ncol); + var cb = $('input[value='+cid+']',g.nDiv)[0]; + + + if (visible==null) + { + visible = ncol.hide; + } + + + + if ($('input:checked',g.nDiv).length<p.minColToggle&&!visible) return false; + + if (visible) + { + ncol.hide = false; + $(ncol).show(); + cb.checked = true; + } + else + { + ncol.hide = true; + $(ncol).hide(); + cb.checked = false; + } + + $('tbody tr',t).each + ( + function () + { + if (visible) + $('td:eq('+n+')',this).show(); + else + $('td:eq('+n+')',this).hide(); + } + ); + + this.rePosDrag(); + + if (p.onToggleCol) p.onToggleCol(cid,visible); + + return visible; + }, + switchCol: function(cdrag,cdrop) { //switch columns + + $('tbody tr',t).each + ( + function () + { + if (cdrag>cdrop) + $('td:eq('+cdrop+')',this).before($('td:eq('+cdrag+')',this)); + else + $('td:eq('+cdrop+')',this).after($('td:eq('+cdrag+')',this)); + } + ); + + //switch order in nDiv + if (cdrag>cdrop) + $('tr:eq('+cdrop+')',this.nDiv).before($('tr:eq('+cdrag+')',this.nDiv)); + else + $('tr:eq('+cdrop+')',this.nDiv).after($('tr:eq('+cdrag+')',this.nDiv)); + + if ($.browser.msie&&$.browser.version<7.0) $('tr:eq('+cdrop+') input',this.nDiv)[0].checked = true; + + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + }, + scroll: function() { + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + this.rePosDrag(); + }, + addData: function (data) { //parse data + + if (p.preProcess) + data = p.preProcess(data); + + $('.pReload',this.pDiv).removeClass('loading'); + this.loading = false; + + if (!data) + { + $('.pPageStat',this.pDiv).html(p.errormsg); + return false; + } + + if (p.dataType=='xml') + p.total = +$('rows total',data).text(); + else + p.total = data.total; + + if (p.total==0) + { + $('tr, a, td, div',t).unbind(); + $(t).empty(); + p.pages = 1; + p.page = 1; + this.buildpager(); + $('.pPageStat',this.pDiv).html(p.nomsg); + return false; + } + + p.pages = Math.ceil(p.total/p.rp); + + if (p.dataType=='xml') + p.page = +$('rows page',data).text(); + else + p.page = data.page; + + this.buildpager(); + + //build new body + var tbody = document.createElement('tbody'); + + if (p.dataType=='json') + { + $.each + ( + data.rows, + function(i,row) + { + var tr = document.createElement('tr'); + if (i % 2 && p.striped) tr.className = 'erow'; + + if (row.id) tr.id = 'row' + row.id; + + //add cell + $('thead tr:first th',g.hDiv).each + ( + function () + { + + var td = document.createElement('td'); + var idx = $(this).attr('axis').substr(3); + td.align = this.align; + td.innerHTML = row.cell[idx]; + $(tr).append(td); + td = null; + } + ); + + + if ($('thead',this.gDiv).length<1) //handle if grid has no headers + { + + for (idx=0;idx<cell.length;idx++) + { + var td = document.createElement('td'); + td.innerHTML = row.cell[idx]; + $(tr).append(td); + td = null; + } + } + + $(tbody).append(tr); + tr = null; + } + ); + + } else if (p.dataType=='xml') { + + i = 1; + + $("rows row",data).each + ( + + function () + { + + i++; + + var tr = document.createElement('tr'); + if (i % 2 && p.striped) tr.className = 'erow'; + + var nid =$(this).attr('id'); + if (nid) tr.id = 'row' + nid; + + nid = null; + + var robj = this; + + + + $('thead tr:first th',g.hDiv).each + ( + function () + { + + var td = document.createElement('td'); + var idx = $(this).attr('axis').substr(3); + td.align = this.align; + td.innerHTML = $("cell:eq("+ idx +")",robj).text(); + $(tr).append(td); + td = null; + } + ); + + + if ($('thead',this.gDiv).length<1) //handle if grid has no headers + { + $('cell',this).each + ( + function () + { + var td = document.createElement('td'); + td.innerHTML = $(this).text(); + $(tr).append(td); + td = null; + } + ); + } + + $(tbody).append(tr); + tr = null; + robj = null; + } + ); + + } + + $('tr',t).unbind(); + $(t).empty(); + + $(t).append(tbody); + this.addCellProp(); + this.addRowProp(); + + //this.fixHeight($(this.bDiv).height()); + + this.rePosDrag(); + + tbody = null; data = null; i = null; + + if (p.onSuccess) p.onSuccess(); + if (p.hideOnSubmit) $(g.block).remove();//$(t).show(); + + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + if ($.browser.opera) $(t).css('visibility','visible'); + + }, + changeSort: function(th) { //change sortorder + + if (this.loading) return true; + + $(g.nDiv).hide();$(g.nBtn).hide(); + + if (p.sortname == $(th).attr('abbr')) + { + if (p.sortorder=='asc') p.sortorder = 'desc'; + else p.sortorder = 'asc'; + } + + $(th).addClass('sorted').siblings().removeClass('sorted'); + $('.sdesc',this.hDiv).removeClass('sdesc'); + $('.sasc',this.hDiv).removeClass('sasc'); + $('div',th).addClass('s'+p.sortorder); + p.sortname= $(th).attr('abbr'); + + if (p.onChangeSort) + p.onChangeSort(p.sortname,p.sortorder); + else + this.populate(); + + }, + buildpager: function(){ //rebuild pager based on new properties + + $('.pcontrol input',this.pDiv).val(p.page); + $('.pcontrol span',this.pDiv).html(p.pages); + + var r1 = (p.page-1) * p.rp + 1; + var r2 = r1 + p.rp - 1; + + if (p.total<r2) r2 = p.total; + + var stat = p.pagestat; + + stat = stat.replace(/{from}/,r1); + stat = stat.replace(/{to}/,r2); + stat = stat.replace(/{total}/,p.total); + + $('.pPageStat',this.pDiv).html(stat); + + }, + populate: function () { //get latest data + + if (this.loading) return true; + + if (p.onSubmit) + { + var gh = p.onSubmit(); + if (!gh) return false; + } + + this.loading = true; + if (!p.url) return false; + + $('.pPageStat',this.pDiv).html(p.procmsg); + + $('.pReload',this.pDiv).addClass('loading'); + + $(g.block).css({top:g.bDiv.offsetTop}); + + if (p.hideOnSubmit) $(this.gDiv).prepend(g.block); //$(t).hide(); + + if ($.browser.opera) $(t).css('visibility','hidden'); + + if (!p.newp) p.newp = 1; + + if (p.page>p.pages) p.page = p.pages; + //var param = {page:p.newp, rp: p.rp, sortname: p.sortname, sortorder: p.sortorder, query: p.query, qtype: p.qtype}; + var param = [ + { name : 'page', value : p.newp } + ,{ name : 'rp', value : p.rp } + ,{ name : 'sortname', value : p.sortname} + ,{ name : 'sortorder', value : p.sortorder } + ,{ name : 'query', value : p.query} + ,{ name : 'qtype', value : p.qtype} + ]; + + if (p.params) + { + for (var pi = 0; pi < p.params.length; pi++) param[param.length] = p.params[pi]; + } + + $.ajax({ + type: p.method, + url: p.url, + data: param, + dataType: p.dataType, + success: function(data){g.addData(data);}, + error: function(data) { try { if (p.onError) p.onError(data); } catch (e) {} } + }); + }, + doSearch: function () { + p.query = $('input[name=q]',g.sDiv).val(); + p.qtype = $('select[name=qtype]',g.sDiv).val(); + p.newp = 1; + + this.populate(); + }, + changePage: function (ctype){ //change page + + if (this.loading) return true; + + switch(ctype) + { + case 'first': p.newp = 1; break; + case 'prev': if (p.page>1) p.newp = parseInt(p.page) - 1; break; + case 'next': if (p.page<p.pages) p.newp = parseInt(p.page) + 1; break; + case 'last': p.newp = p.pages; break; + case 'input': + var nv = parseInt($('.pcontrol input',this.pDiv).val()); + if (isNaN(nv)) nv = 1; + if (nv<1) nv = 1; + else if (nv > p.pages) nv = p.pages; + $('.pcontrol input',this.pDiv).val(nv); + p.newp =nv; + break; + } + + if (p.newp==p.page) return false; + + if (p.onChangePage) + p.onChangePage(p.newp); + else + this.populate(); + + }, + addCellProp: function () + { + + $('tbody tr td',g.bDiv).each + ( + function () + { + var tdDiv = document.createElement('div'); + var n = $('td',$(this).parent()).index(this); + var pth = $('th:eq('+n+')',g.hDiv).get(0); + + if (pth!=null) + { + if (p.sortname==$(pth).attr('abbr')&&p.sortname) + { + this.className = 'sorted'; + } + $(tdDiv).css({textAlign:pth.align,width: $('div:first',pth)[0].style.width}); + + if (pth.hide) $(this).css('display','none'); + + } + + if (p.nowrap==false) $(tdDiv).css('white-space','normal'); + + if (this.innerHTML=='') this.innerHTML = ' '; + + //tdDiv.value = this.innerHTML; //store preprocess value + tdDiv.innerHTML = this.innerHTML; + + var prnt = $(this).parent()[0]; + var pid = false; + if (prnt.id) pid = prnt.id.substr(3); + + if (pth!=null) + { + if (pth.process) pth.process(tdDiv,pid); + } + + $(this).empty().append(tdDiv).removeAttr('width'); //wrap content + + //add editable event here 'dblclick' + + } + ); + + }, + getCellDim: function (obj) // get cell prop for editable event + { + var ht = parseInt($(obj).height()); + var pht = parseInt($(obj).parent().height()); + var wt = parseInt(obj.style.width); + var pwt = parseInt($(obj).parent().width()); + var top = obj.offsetParent.offsetTop; + var left = obj.offsetParent.offsetLeft; + var pdl = parseInt($(obj).css('paddingLeft')); + var pdt = parseInt($(obj).css('paddingTop')); + return {ht:ht,wt:wt,top:top,left:left,pdl:pdl, pdt:pdt, pht:pht, pwt: pwt}; + }, + addRowProp: function() + { + $('tbody tr',g.bDiv).each + ( + function () + { + $(this) + .click( + function (e) + { + var obj = (e.target || e.srcElement); if (obj.href || obj.type) return true; + $(this).toggleClass('trSelected'); + if (p.singleSelect) $(this).siblings().removeClass('trSelected'); + } + ) + .mousedown( + function (e) + { + if (e.shiftKey) + { + $(this).toggleClass('trSelected'); + g.multisel = true; + this.focus(); + $(g.gDiv).noSelect(); + } + } + ) + .mouseup( + function () + { + if (g.multisel) + { + g.multisel = false; + $(g.gDiv).noSelect(false); + } + } + ) + .hover( + function (e) + { + if (g.multisel) + { + $(this).toggleClass('trSelected'); + } + }, + function () {} + ) + ; + + if ($.browser.msie&&$.browser.version<7.0) + { + $(this) + .hover( + function () { $(this).addClass('trOver'); }, + function () { $(this).removeClass('trOver'); } + ) + ; + } + } + ); + + + }, + pager: 0 + }; + + //create model if any + if (p.colModel) + { + thead = document.createElement('thead'); + tr = document.createElement('tr'); + + for (i=0;i<p.colModel.length;i++) + { + var cm = p.colModel[i]; + var th = document.createElement('th'); + + th.innerHTML = cm.display; + + if (cm.name&&cm.sortable) + $(th).attr('abbr',cm.name); + + //th.idx = i; + $(th).attr('axis','col'+i); + + if (cm.align) + th.align = cm.align; + + if (cm.width) + $(th).attr('width',cm.width); + + if (cm.hide) + { + th.hide = true; + } + + if (cm.process) + { + th.process = cm.process; + } + + $(tr).append(th); + } + $(thead).append(tr); + $(t).prepend(thead); + } // end if p.colmodel + + //init divs + g.gDiv = document.createElement('div'); //create global container + g.mDiv = document.createElement('div'); //create title container + g.hDiv = document.createElement('div'); //create header container + g.bDiv = document.createElement('div'); //create body container + g.vDiv = document.createElement('div'); //create grip + g.rDiv = document.createElement('div'); //create horizontal resizer + g.cDrag = document.createElement('div'); //create column drag + g.block = document.createElement('div'); //creat blocker + g.nDiv = document.createElement('div'); //create column show/hide popup + g.nBtn = document.createElement('div'); //create column show/hide button + g.iDiv = document.createElement('div'); //create editable layer + g.tDiv = document.createElement('div'); //create toolbar + g.sDiv = document.createElement('div'); + + if (p.usepager) g.pDiv = document.createElement('div'); //create pager container + g.hTable = document.createElement('table'); + + //set gDiv + g.gDiv.className = 'flexigrid'; + if (p.width!='auto') g.gDiv.style.width = p.width + 'px'; + + //add conditional classes + if ($.browser.msie) + $(g.gDiv).addClass('ie'); + + if (p.novstripe) + $(g.gDiv).addClass('novstripe'); + + $(t).before(g.gDiv); + $(g.gDiv) + .append(t) + ; + + //set toolbar + if (p.buttons) + { + g.tDiv.className = 'tDiv'; + var tDiv2 = document.createElement('div'); + tDiv2.className = 'tDiv2'; + + for (i=0;i<p.buttons.length;i++) + { + var btn = p.buttons[i]; + if (!btn.separator) + { + var btnDiv = document.createElement('div'); + btnDiv.className = 'fbutton'; + btnDiv.innerHTML = "<div><span>"+btn.name+"</span></div>"; + if (btn.bclass) + $('span',btnDiv) + .addClass(btn.bclass) + .css({paddingLeft:20}) + ; + btnDiv.onpress = btn.onpress; + btnDiv.name = btn.name; + if (btn.onpress) + { + $(btnDiv).click + ( + function () + { + this.onpress(this.name,g.gDiv); + } + ); + } + $(tDiv2).append(btnDiv); + if ($.browser.msie&&$.browser.version<7.0) + { + $(btnDiv).hover(function(){$(this).addClass('fbOver');},function(){$(this).removeClass('fbOver');}); + } + + } else { + $(tDiv2).append("<div class='btnseparator'></div>"); + } + } + $(g.tDiv).append(tDiv2); + $(g.tDiv).append("<div style='clear:both'></div>"); + $(g.gDiv).prepend(g.tDiv); + } + + //set hDiv + g.hDiv.className = 'hDiv'; + + $(t).before(g.hDiv); + + //set hTable + g.hTable.cellPadding = 0; + g.hTable.cellSpacing = 0; + $(g.hDiv).append('<div class="hDivBox"></div>'); + $('div',g.hDiv).append(g.hTable); + var thead = $("thead:first",t).get(0); + if (thead) $(g.hTable).append(thead); + thead = null; + + if (!p.colmodel) var ci = 0; + + //setup thead + $('thead tr:first th',g.hDiv).each + ( + function () + { + var thdiv = document.createElement('div'); + + + + if ($(this).attr('abbr')) + { + $(this).click( + function (e) + { + + if (!$(this).hasClass('thOver')) return false; + var obj = (e.target || e.srcElement); + if (obj.href || obj.type) return true; + g.changeSort(this); + } + ) + ; + + if ($(this).attr('abbr')==p.sortname) + { + this.className = 'sorted'; + thdiv.className = 's'+p.sortorder; + } + } + + if (this.hide) $(this).hide(); + + if (!p.colmodel) + { + $(this).attr('axis','col' + ci++); + } + + + $(thdiv).css({textAlign:this.align, width: this.width + 'px'}); + thdiv.innerHTML = this.innerHTML; + + $(this).empty().append(thdiv).removeAttr('width') + .mousedown(function (e) + { + g.dragStart('colMove',e,this); + }) + .hover( + function(){ + if (!g.colresize&&!$(this).hasClass('thMove')&&!g.colCopy) $(this).addClass('thOver'); + + if ($(this).attr('abbr')!=p.sortname&&!g.colCopy&&!g.colresize&&$(this).attr('abbr')) $('div',this).addClass('s'+p.sortorder); + else if ($(this).attr('abbr')==p.sortname&&!g.colCopy&&!g.colresize&&$(this).attr('abbr')) + { + var no = ''; + if (p.sortorder=='asc') no = 'desc'; + else no = 'asc'; + $('div',this).removeClass('s'+p.sortorder).addClass('s'+no); + } + + if (g.colCopy) + { + var n = $('th',g.hDiv).index(this); + + if (n==g.dcoln) return false; + + + + if (n<g.dcoln) $(this).append(g.cdropleft); + else $(this).append(g.cdropright); + + g.dcolt = n; + + } else if (!g.colresize) { + + var nv = $('th:visible',g.hDiv).index(this); + var onl = parseInt($('div:eq('+nv+')',g.cDrag).css('left')); + var nw = parseInt($(g.nBtn).width()) + parseInt($(g.nBtn).css('borderLeftWidth')); + nl = onl - nw + Math.floor(p.cgwidth/2); + + $(g.nDiv).hide();$(g.nBtn).hide(); + + $(g.nBtn).css({'left':nl,top:g.hDiv.offsetTop}).show(); + + var ndw = parseInt($(g.nDiv).width()); + + $(g.nDiv).css({top:g.bDiv.offsetTop}); + + if ((nl+ndw)>$(g.gDiv).width()) + $(g.nDiv).css('left',onl-ndw+1); + else + $(g.nDiv).css('left',nl); + + if ($(this).hasClass('sorted')) + $(g.nBtn).addClass('srtd'); + else + $(g.nBtn).removeClass('srtd'); + + } + + }, + function(){ + $(this).removeClass('thOver'); + if ($(this).attr('abbr')!=p.sortname) $('div',this).removeClass('s'+p.sortorder); + else if ($(this).attr('abbr')==p.sortname) + { + var no = ''; + if (p.sortorder=='asc') no = 'desc'; + else no = 'asc'; + + $('div',this).addClass('s'+p.sortorder).removeClass('s'+no); + } + if (g.colCopy) + { + $(g.cdropleft).remove(); + $(g.cdropright).remove(); + g.dcolt = null; + } + }) + ; //wrap content + } + ); + + //set bDiv + g.bDiv.className = 'bDiv'; + $(t).before(g.bDiv); + $(g.bDiv) + .css({ height: (p.height=='auto') ? 'auto' : p.height+"px"}) + .scroll(function (e) {g.scroll()}) + .append(t) + ; + + if (p.height == 'auto') + { + $('table',g.bDiv).addClass('autoht'); + } + + + //add td properties + g.addCellProp(); + + //add row properties + g.addRowProp(); + + //set cDrag + + var cdcol = $('thead tr:first th:first',g.hDiv).get(0); + + if (cdcol != null) + { + g.cDrag.className = 'cDrag'; + g.cdpad = 0; + + g.cdpad += (isNaN(parseInt($('div',cdcol).css('borderLeftWidth'))) ? 0 : parseInt($('div',cdcol).css('borderLeftWidth'))); + g.cdpad += (isNaN(parseInt($('div',cdcol).css('borderRightWidth'))) ? 0 : parseInt($('div',cdcol).css('borderRightWidth'))); + g.cdpad += (isNaN(parseInt($('div',cdcol).css('paddingLeft'))) ? 0 : parseInt($('div',cdcol).css('paddingLeft'))); + g.cdpad += (isNaN(parseInt($('div',cdcol).css('paddingRight'))) ? 0 : parseInt($('div',cdcol).css('paddingRight'))); + g.cdpad += (isNaN(parseInt($(cdcol).css('borderLeftWidth'))) ? 0 : parseInt($(cdcol).css('borderLeftWidth'))); + g.cdpad += (isNaN(parseInt($(cdcol).css('borderRightWidth'))) ? 0 : parseInt($(cdcol).css('borderRightWidth'))); + g.cdpad += (isNaN(parseInt($(cdcol).css('paddingLeft'))) ? 0 : parseInt($(cdcol).css('paddingLeft'))); + g.cdpad += (isNaN(parseInt($(cdcol).css('paddingRight'))) ? 0 : parseInt($(cdcol).css('paddingRight'))); + + $(g.bDiv).before(g.cDrag); + + var cdheight = $(g.bDiv).height(); + var hdheight = $(g.hDiv).height(); + + $(g.cDrag).css({top: -hdheight + 'px'}); + + $('thead tr:first th',g.hDiv).each + ( + function () + { + var cgDiv = document.createElement('div'); + $(g.cDrag).append(cgDiv); + if (!p.cgwidth) p.cgwidth = $(cgDiv).width(); + $(cgDiv).css({height: cdheight + hdheight}) + .mousedown(function(e){g.dragStart('colresize',e,this);}) + ; + if ($.browser.msie&&$.browser.version<7.0) + { + g.fixHeight($(g.gDiv).height()); + $(cgDiv).hover( + function () + { + g.fixHeight(); + $(this).addClass('dragging') + }, + function () { if (!g.colresize) $(this).removeClass('dragging') } + ); + } + } + ); + + //g.rePosDrag(); + + } + + + //add strip + if (p.striped) + $('tbody tr:odd',g.bDiv).addClass('erow'); + + + if (p.resizable && p.height !='auto') + { + g.vDiv.className = 'vGrip'; + $(g.vDiv) + .mousedown(function (e) { g.dragStart('vresize',e)}) + .html('<span></span>'); + $(g.bDiv).after(g.vDiv); + } + + if (p.resizable && p.width !='auto' && !p.nohresize) + { + g.rDiv.className = 'hGrip'; + $(g.rDiv) + .mousedown(function (e) {g.dragStart('vresize',e,true);}) + .html('<span></span>') + .css('height',$(g.gDiv).height()) + ; + if ($.browser.msie&&$.browser.version<7.0) + { + $(g.rDiv).hover(function(){$(this).addClass('hgOver');},function(){$(this).removeClass('hgOver');}); + } + $(g.gDiv).append(g.rDiv); + } + + // add pager + if (p.usepager) + { + g.pDiv.className = 'pDiv'; + g.pDiv.innerHTML = '<div class="pDiv2"></div>'; + $(g.bDiv).after(g.pDiv); + var html = ' <div class="pGroup"> <div class="pFirst pButton"><span></span></div><div class="pPrev pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pcontrol">Page <input type="text" size="4" value="1" /> of <span> 1 </span></span></div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pNext pButton"><span></span></div><div class="pLast pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pReload pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pPageStat"></span></div>'; + $('div',g.pDiv).html(html); + + $('.pReload',g.pDiv).click(function(){g.populate()}); + $('.pFirst',g.pDiv).click(function(){g.changePage('first')}); + $('.pPrev',g.pDiv).click(function(){g.changePage('prev')}); + $('.pNext',g.pDiv).click(function(){g.changePage('next')}); + $('.pLast',g.pDiv).click(function(){g.changePage('last')}); + $('.pcontrol input',g.pDiv).keydown(function(e){if(e.keyCode==13) g.changePage('input')}); + if ($.browser.msie&&$.browser.version<7) $('.pButton',g.pDiv).hover(function(){$(this).addClass('pBtnOver');},function(){$(this).removeClass('pBtnOver');}); + + if (p.useRp) + { + var opt = ""; + for (var nx=0;nx<p.rpOptions.length;nx++) + { + if (p.rp == p.rpOptions[nx]) sel = 'selected="selected"'; else sel = ''; + opt += "<option value='" + p.rpOptions[nx] + "' " + sel + " >" + p.rpOptions[nx] + " </option>"; + }; + $('.pDiv2',g.pDiv).prepend("<div class='pGroup'><select name='rp'>"+opt+"</select></div> <div class='btnseparator'></div>"); + $('select',g.pDiv).change( + function () + { + if (p.onRpChange) + p.onRpChange(+this.value); + else + { + p.newp = 1; + p.rp = +this.value; + g.populate(); + } + } + ); + } + + //add search button + if (p.searchitems) + { + $('.pDiv2',g.pDiv).prepend("<div class='pGroup'> <div class='pSearch pButton'><span></span></div> </div> <div class='btnseparator'></div>"); + $('.pSearch',g.pDiv).click(function(){$(g.sDiv).slideToggle('fast',function(){$('.sDiv:visible input:first',g.gDiv).trigger('focus');});}); + //add search box + g.sDiv.className = 'sDiv'; + + sitems = p.searchitems; + + var sopt = ""; + for (var s = 0; s < sitems.length; s++) + { + if (p.qtype=='' && sitems[s].isdefault==true) + { + p.qtype = sitems[s].name; + sel = 'selected="selected"'; + } else sel = ''; + sopt += "<option value='" + sitems[s].name + "' " + sel + " >" + sitems[s].display + " </option>"; + } + + if (p.qtype=='') p.qtype = sitems[0].name; + + $(g.sDiv).append("<div class='sDiv2'>Quick Search <input type='text' size='30' name='q' class='qsbox' /> <select name='qtype'>"+sopt+"</select> <input type='button' value='Clear' /></div>"); + + $('input[name=q],select[name=qtype]',g.sDiv).keydown(function(e){if(e.keyCode==13) g.doSearch()}); + $('input[value=Clear]',g.sDiv).click(function(){$('input[name=q]',g.sDiv).val(''); p.query = ''; g.doSearch(); }); + $(g.bDiv).after(g.sDiv); + + } + + } + $(g.pDiv,g.sDiv).append("<div style='clear:both'></div>"); + + // add title + if (p.title) + { + g.mDiv.className = 'mDiv'; + g.mDiv.innerHTML = '<div class="ftitle">'+p.title+'</div>'; + $(g.gDiv).prepend(g.mDiv); + if (p.showTableToggleBtn) + { + $(g.mDiv).append('<div class="ptogtitle" title="Minimize/Maximize Table"><span></span></div>'); + $('div.ptogtitle',g.mDiv).click + ( + function () + { + $(g.gDiv).toggleClass('hideBody'); + $(this).toggleClass('vsble'); + } + ); + } + //g.rePosDrag(); + } + + //setup cdrops + g.cdropleft = document.createElement('span'); + g.cdropleft.className = 'cdropleft'; + g.cdropright = document.createElement('span'); + g.cdropright.className = 'cdropright'; + + //add block + g.block.className = 'gBlock'; + var gh = $(g.bDiv).height(); + var gtop = g.bDiv.offsetTop; + $(g.block).css( + { + width: g.bDiv.style.width, + height: gh, + background: 'white', + position: 'relative', + marginBottom: (gh * -1), + zIndex: 1, + top: gtop, + left: '0px' + } + ); + $(g.block).fadeTo(0,p.blockOpacity); + + // add column control + if ($('th',g.hDiv).length) + { + + g.nDiv.className = 'nDiv'; + g.nDiv.innerHTML = "<table cellpadding='0' cellspacing='0'><tbody></tbody></table>"; + $(g.nDiv).css( + { + marginBottom: (gh * -1), + display: 'none', + top: gtop + } + ).noSelect() + ; + + var cn = 0; + + + $('th div',g.hDiv).each + ( + function () + { + var kcol = $("th[axis='col" + cn + "']",g.hDiv)[0]; + var chk = 'checked="checked"'; + if (kcol.style.display=='none') chk = ''; + + $('tbody',g.nDiv).append('<tr><td class="ndcol1"><input type="checkbox" '+ chk +' class="togCol" value="'+ cn +'" /></td><td class="ndcol2">'+this.innerHTML+'</td></tr>'); + cn++; + } + ); + + if ($.browser.msie&&$.browser.version<7.0) + $('tr',g.nDiv).hover + ( + function () {$(this).addClass('ndcolover');}, + function () {$(this).removeClass('ndcolover');} + ); + + $('td.ndcol2',g.nDiv).click + ( + function () + { + if ($('input:checked',g.nDiv).length<=p.minColToggle&&$(this).prev().find('input')[0].checked) return false; + return g.toggleCol($(this).prev().find('input').val()); + } + ); + + $('input.togCol',g.nDiv).click + ( + function () + { + + if ($('input:checked',g.nDiv).length<p.minColToggle&&this.checked==false) return false; + $(this).parent().next().trigger('click'); + //return false; + } + ); + + + $(g.gDiv).prepend(g.nDiv); + + $(g.nBtn).addClass('nBtn') + .html('<div></div>') + .attr('title','Hide/Show Columns') + .click + ( + function () + { + $(g.nDiv).toggle(); return true; + } + ); + + if (p.showToggleBtn) $(g.gDiv).prepend(g.nBtn); + + } + + // add date edit layer + $(g.iDiv) + .addClass('iDiv') + .css({display:'none'}) + ; + $(g.bDiv).append(g.iDiv); + + // add flexigrid events + $(g.bDiv) + .hover(function(){$(g.nDiv).hide();$(g.nBtn).hide();},function(){if (g.multisel) g.multisel = false;}) + ; + $(g.gDiv) + .hover(function(){},function(){$(g.nDiv).hide();$(g.nBtn).hide();}) + ; + + //add document events + $(document) + .mousemove(function(e){g.dragMove(e)}) + .mouseup(function(e){g.dragEnd()}) + .hover(function(){},function (){g.dragEnd()}) + ; + + //browser adjustments + if ($.browser.msie&&$.browser.version<7.0) + { + $('.hDiv,.bDiv,.mDiv,.pDiv,.vGrip,.tDiv, .sDiv',g.gDiv) + .css({width: '100%'}); + $(g.gDiv).addClass('ie6'); + if (p.width!='auto') $(g.gDiv).addClass('ie6fullwidthbug'); + } + + g.rePosDrag(); + g.fixHeight(); + + //make grid functions accessible + t.p = p; + t.grid = g; + + // load data + if (p.url&&p.autoload) + { + g.populate(); + } + + return t; + + }; + + var docloaded = false; + + $(document).ready(function () {docloaded = true} ); + + $.fn.flexigrid = function(p) { + + return this.each( function() { + if (!docloaded) + { + $(this).hide(); + var t = this; + $(document).ready + ( + function () + { + $.addFlex(t,p); + } + ); + } else { + $.addFlex(this,p); + } + }); + + }; //end flexigrid + + $.fn.flexReload = function(p) { // function to reload grid + + return this.each( function() { + if (this.grid&&this.p.url) this.grid.populate(); + }); + + }; //end flexReload + + $.fn.flexOptions = function(p) { //function to update general options + + return this.each( function() { + if (this.grid) $.extend(this.p,p); + }); + + }; //end flexOptions + + $.fn.flexToggleCol = function(cid,visible) { // function to reload grid + + return this.each( function() { + if (this.grid) this.grid.toggleCol(cid,visible); + }); + + }; //end flexToggleCol + + $.fn.flexAddData = function(data) { // function to add data to grid + + return this.each( function() { + if (this.grid) this.grid.addData(data); + }); + + }; + + $.fn.noSelect = function(p) { //no select plugin by me :-) + + if (p == null) + prevent = true; + else + prevent = p; + + if (prevent) { + + return this.each(function () + { + if ($.browser.msie||$.browser.safari) $(this).bind('selectstart',function(){return false;}); + else if ($.browser.mozilla) + { + $(this).css('MozUserSelect','none'); + $('body').trigger('focus'); + } + else if ($.browser.opera) $(this).bind('mousedown',function(){return false;}); + else $(this).attr('unselectable','on'); + }); + + } else { + + + return this.each(function () + { + if ($.browser.msie||$.browser.safari) $(this).unbind('selectstart'); + else if ($.browser.mozilla) $(this).css('MozUserSelect','inherit'); + else if ($.browser.opera) $(this).unbind('mousedown'); + else $(this).removeAttr('unselectable','on'); + }); + + } + + }; //end noSelect + +})(jQuery); \ No newline at end of file diff --git a/static/js/jquery-1.3.2.min.js b/static/js/jquery-1.3.2.min.js new file mode 100644 index 000000000..b1ae21d8b --- /dev/null +++ b/static/js/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},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 toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},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(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/templates/gracedb/event_list.html b/templates/gracedb/event_list.html index 25d5f4529..e3d6debe3 100644 --- a/templates/gracedb/event_list.html +++ b/templates/gracedb/event_list.html @@ -6,6 +6,10 @@ {% block pageid %}search{% endblock %} {% block jscript %} + <link rel="stylesheet" href="/gracedb-static/css/flexigrid/flexigrid.css" /> + + <script type="text/javascript" src="/gracedb-static/js/jquery-1.3.2.min.js"></script> + <script type="text/javascript" src="/gracedb-static/js/flexigrid.js"></script> <script type="text/javascript"> <!-- function toggle_visibility(id) { @@ -17,6 +21,48 @@ } //--> </script> + <script type="text/javascript"> + <!-- + function test() { alert("test"); } + $(document).ready(function(){ + $("#flex1").flexigrid + ( + { + url: 'https://moe.phys.uwm.edu/gracedb/events/search/flex', + dataType: 'json', + query: '{{ rawquery }}', + colModel : [ + {display: 'UID', name : 'id', width : 100, sortable : true, align: 'left'}, + {display: 'Labels', name : 'labels', width : 100, sortable : false, align: 'left'}, + {display: 'Group', name : 'group', width : 100, sortable : false, align: 'left'}, + {display: 'Type', name : 'type', width : 130, sortable : true, align: 'left', hide: false}, + {display: 'Event Time', name : 'gpstime', width : 100, sortable : true, align: 'right'}, + {display: 'Links', name : 'links', width : 100, sortable : false, align: 'center'}, + {display: 'Submitted', name : 'created', width : 100, sortable : true, align: 'right'}, + ], + buttons : [ + //{name: 'Add', bclass: 'add', onpress : test}, + //{name: 'Delete', bclass: 'delete', onpress : test}, + //{separator: true} + ], +// searchitems : [ +// {display: 'UID', name : 'id'}, +// //{display: 'Name', name : 'name', isdefault: true} +// ], + sortname: "id", + sortorder: "desc", + usepager: true, + title: 'Results', + useRp: true, + rp: 25, + showTableToggleBtn: true, + width: 'auto', + height: 'auto' + } + ); + }); + --> + </script> {% endblock %} @@ -43,24 +89,26 @@ </form> {% endif %} +{% if false %} {% if object_list.count %} <table class="event"> + <thead> <tr> - <th>UID</th> - <th>Labels</th> - <th>Group</th> - <th>Type</th> - <th> - {{ "gps"|timeselect:"gps" }} + <th width="100">UID</th> + <th width="100">Labels</th> + <th width="100">Group</th> + <th width="100">Type</th> + <th width="100"> Event Time </th> - <th colspan="2">Links</th> - <th> - {{"created"|timeselect:"utc" }} + <th width="100">Links</th> + <th width="100"> Submitted </th> </tr> + </thead> + <tbody> {% for obj in object_list %} <tr class={% cycle 'odd' 'even' %}> <td><a href="{% url view obj.graceid %}">{{ obj.graceid }}</a></td> @@ -72,18 +120,23 @@ <td>{{ obj.group }} </td> <td>{{ obj.get_analysisType_display }} </td> <td>{% if obj.gpstime%} - <!-- <span title="{{ obj.gpstime|gpsdate }}">{{ obj.gpstime }}</span> --> - {{ obj.gpstime|multiTime:"gps" }} + {{ obj.gpstime }} {% endif %} </td> - <td><a href="{{ obj.weburl }}">Data</a></td> - <td><a href="{{ obj.wikiurl }}">Wiki</a></td> - <td>{{ obj.created|multiTime:"created" }}</td> + <td><a href="{{ obj.weburl }}">Data</a> + <a href="{{ obj.wikiurl }}">Wiki</a></td> + <td>{{ obj.created }}</td> </tr> {% endfor %} + </tbody> </table> {% else %} <h3>No Events.</h3> {% endif %} +{% endif %} + + +<table id="flex1"></table> + {% endblock %} -- GitLab