Browse Source

added stuff to tree

sanj 15 years ago
parent
commit
0ef53bf6dd
  1. 2
      itf/.bzrignore
  2. 64
      itf/README.txt
  3. 1
      itf/TODO
  4. 0
      itf/__init__.py
  5. 97
      itf/aldensNotes.txt
  6. 20
      itf/dropandcreatedb.py
  7. 0
      itf/erang/__init__.py
  8. 22
      itf/erang/models.py
  9. 23
      itf/erang/tests.py
  10. 1
      itf/erang/views.py
  11. 0
      itf/festival/__init__.py
  12. 83
      itf/festival/admin.py
  13. 11
      itf/festival/forms.py
  14. 132
      itf/festival/models.py
  15. 23
      itf/festival/tests.py
  16. 8
      itf/festival/utils.py
  17. 178
      itf/festival/views.py
  18. 0
      itf/itfcore/__init__.py
  19. 67
      itf/itfcore/admin.py
  20. 58
      itf/itfcore/fields.py
  21. 253
      itf/itfcore/models.py
  22. 49
      itf/itfcore/views.py
  23. 11
      itf/manage.py
  24. 1
      itf/meetingdata.json
  25. 113
      itf/monitor.py
  26. 125
      itf/settings.py
  27. 63
      itf/static/css/colorbox.css
  28. 10
      itf/static/css/error_pages.css
  29. 113
      itf/static/css/festival.css
  30. 54
      itf/static/css/festival_index.css
  31. 184
      itf/static/css/fullcalendar.css
  32. 419
      itf/static/css/index.css
  33. 65
      itf/static/css/jScrollPane.css
  34. 49
      itf/static/css/jcarousel.css
  35. 50
      itf/static/css/jcarouselskin.css
  36. 406
      itf/static/css/jquery-ui-1.7.2.custom.css
  37. 9
      itf/static/css/jquery.tooltip.css
  38. 104
      itf/static/css/meeting.css
  39. 28
      itf/static/css/people.css
  40. 163
      itf/static/css/thickbox.css
  41. 200
      itf/static/css/wireframe.css
  42. BIN
      itf/static/images/150x150.jpg
  43. BIN
      itf/static/images/50x50.jpg
  44. BIN
      itf/static/images/Audio.jpg
  45. BIN
      itf/static/images/Lowbg_bak.jpg
  46. BIN
      itf/static/images/PDFIcon.jpg
  47. BIN
      itf/static/images/VideoIcon.jpg
  48. BIN
      itf/static/images/audio.gif
  49. BIN
      itf/static/images/bg1.jpg
  50. BIN
      itf/static/images/book.jpg
  51. BIN
      itf/static/images/border.png
  52. BIN
      itf/static/images/controls.png
  53. BIN
      itf/static/images/document.gif
  54. BIN
      itf/static/images/favicon.ico
  55. BIN
      itf/static/images/image.gif
  56. BIN
      itf/static/images/internet_explorer/borderBottomCenter.png
  57. BIN
      itf/static/images/internet_explorer/borderBottomLeft.png
  58. BIN
      itf/static/images/internet_explorer/borderBottomRight.png
  59. BIN
      itf/static/images/internet_explorer/borderMiddleLeft.png
  60. BIN
      itf/static/images/internet_explorer/borderMiddleRight.png
  61. BIN
      itf/static/images/internet_explorer/borderTopCenter.png
  62. BIN
      itf/static/images/internet_explorer/borderTopLeft.png
  63. BIN
      itf/static/images/internet_explorer/borderTopRight.png
  64. BIN
      itf/static/images/large_audio.gif
  65. BIN
      itf/static/images/loading.gif
  66. BIN
      itf/static/images/loadingAnimation.gif
  67. BIN
      itf/static/images/loading_background.png
  68. BIN
      itf/static/images/overlay.png
  69. BIN
      itf/static/images/player.swf
  70. BIN
      itf/static/images/playvid.jpg
  71. BIN
      itf/static/images/playvid100.jpg
  72. BIN
      itf/static/images/profileimage.jpg
  73. BIN
      itf/static/images/theatre.jpg
  74. BIN
      itf/static/images/video-mini.gif
  75. 73
      itf/static/js/festival.js
  76. 1238
      itf/static/js/fullcalendar.js
  77. 16
      itf/static/js/fullcalendar.min.js
  78. 1
      itf/static/js/jScrollPane-1.2.3.min.js
  79. 16
      itf/static/js/jcarousel.js
  80. 19
      itf/static/js/jquery-1.3.2.min.js
  81. 34
      itf/static/js/jquery-ui-1.7.2.custom.min.js
  82. 2
      itf/static/js/jquery.colorbox-min.js
  83. 60
      itf/static/js/jquery.mousewheel.js
  84. 294
      itf/static/js/jquery.tooltip.js
  85. 26
      itf/static/js/jquery.transliterate.js
  86. 256
      itf/static/js/mockup.js
  87. 54
      itf/static/js/mytrans.js
  88. 12
      itf/static/js/people.js
  89. 36
      itf/static/js/pretty.js
  90. 8
      itf/static/js/swfobject.js
  91. 10
      itf/static/js/thickbox.js
  92. 16
      itf/templates/404.html
  93. 14
      itf/templates/500.html
  94. 10
      itf/templates/admin/base_site.html
  95. 32
      itf/templates/erang.html
  96. 71
      itf/templates/festival_base.html
  97. 86
      itf/templates/festival_index.html
  98. 100
      itf/templates/festival_wireframe.html
  99. 71
      itf/templates/home.html
  100. 1
      itf/templates/index.html

2
itf/.bzrignore

@ -0,0 +1,2 @@
settings.py
.bzrlog

64
itf/README.txt

@ -0,0 +1,64 @@
db name = 'theatre' - change if different.
Install Solango:
svn checkout http://django-solr-search.googlecode.com/svn/trunk/ django-solr-search
cd django-solr-search
sudo python setup.py install
You will also need to install Solr, follow instructions here:
http://www.screeley.com/djangosolr/install.html#install
Install Django-Multilingual:
svn checkout http://django-multilingual.googlecode.com/svn/trunk/ django-multilingual
cd django-multilingual
sudo python setup.py install
Install Djangologging for debugging (svn checkout http://django-logging.googlecode.com/svn/trunk/ django-logging-read-only):
svn checkout http://django-logging.googlecode.com/svn/trunk/ django-logging-read-only djangologging
sudo mv djangologging/ /var/lib/python-support/python2.6/
For Django-Extensions and Graphing Tool:
sudo apt-get install graphviz graphviz-dev
sudo easy_install pygraphviz
Download and install django_extensions: http://code.google.com/p/django-command-extensions/downloads/list
Add django_extensions to your INSTALLED_APPS in settings.py
Command to generate PNG visualization of your models: ./manage.py graph_models -a -g -o my_project_visualized.png
mysqld --verbose --help | grep character-set
You’ll probably see:
character-set-server latin1
You want this to be uft8. To modify it, edit your my.conf file ( /etc/mysql/my.conf on ubuntu ), adding the following lines to the appropriate sections:
[client]
default-character-set = utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
init_connect=’set collation_connection = utf8_unicode_ci;’
Now restart mysql:
sudo /etc/init.d/mysql restart
And alter your existing tables to use the utf8 encoding:
mysql your_db_name
alter table your_table_name convert to character set utf8;
And that should do it.

1
itf/TODO

@ -0,0 +1 @@
To do:

0
itf/__init__.py

97
itf/aldensNotes.txt

@ -0,0 +1,97 @@
new todos:
1. All headings/titles are centered right now. Would be nice if they could be left alligned to the paragraph.
Headings (h1 I guess?) should not be center-aligned by default.
2. All headings are bold. I thought they were looking better not bold. Only when they are selected they should get bold.
Maybe ignore this for now since I dont know wtf she means.
3. it would look noce if the space where the scrolling starts (in the central box) if we could have a larger margin above and below. Sanjay, I know i'm being unclear... I can explain this on the phone.
No. this is not possible.
4. The 2 titles - Welcome to.... and About us could start at the same level and that could also be the scroll margin.
I think I did this.
5. We could also have larger margins on the left and right of both the text boxes?
I think she refers to increasing the left and right padding on center and right boxes.
6. Inside MEETINGS all the text has become another font.
Inside tabs, all fonts have gone weird. Maybe look at the jquery-ui stylesheet to debug.
7. The tags could loose the orange outline if it's not a major problem.
Again - see if you can make this go away - but not sure if there's a solution.
8. In the pre-reading section all allignments are shifted
Fixed.
+ remove the jquery.mousewheel.js and jScrollPane js and css files as we are not using them .
+ Figure ordering meetings by date, and sending dateStart and dateEnd of meetings as context vars to meetings page .
That's all I can think of for now.
Cheers,
Sanj
(09:25:50 IST) b@pad.ma: 1> Plugin text for about / intro / static pages.
(09:25:57 IST) b@pad.ma: 2> Change tabs design.
(09:26:34 IST) b@pad.ma: 3> Move / style email signup, for me, change the JS around to go with new design .
(09:27:20 IST) b@pad.ma: 4> Handle hover states for meetings, projects, and participants lists.
(09:28:13 IST) b@pad.ma: 5> Todo for me: Make video page.
(09:29:46 IST) b@pad.ma: 6> Replace current jquery-ui,js with a custom download of just the components we need.
(09:31:53 IST) b@pad.ma: 7> Update urls and all, push to server.
(09:31:58 IST) b@pad.ma: Nice to haves:
(09:32:13 IST) b@pad.ma: 1> Have the currently selected page button show up as selected on the left nav.
(09:32:21 IST) b@pad.ma: 2> Have the custom scrollbar images done .
DEADLINES:
10th - finalize site structure and functionality
15th - launch.
16th - meeting for eRang
NOTES:
tell sharvari for now, not to use inline fields for attaching images/docs/vids/audio to talks. use non-inline method instead.
TODO:
1) view for upcoming meetings, ordered by meeting day.
2) frontend js to receive upcoming meetings, populate accordion
3) recreate jquery-custom package
nm = MeetingDay.objects.filter(meeting_date__gte=date.today).order_by('meeting_date')
bzr push lp:~campmumbai/+junk/itf0-1

20
itf/dropandcreatedb.py

@ -0,0 +1,20 @@
import sys
import os
from settings import DATABASE_NAME
try:
import settings # Assumed to be in the same directory.
except ImportError:
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
filename = "/tmp/tmp.txt"
tmpfile = open(filename, "w")
tmpfile.write("DROP DATABASE %s;\nCREATE DATABASE %s;\n" % (DATABASE_NAME, DATABASE_NAME) )
tmpfile.close()
os.system("mysql -u root < " + filename)
os.system("python manage.py syncdb --noinput")
os.system("python manage.py createsuperuser --username admin --email user@user.com")

0
itf/erang/__init__.py

22
itf/erang/models.py

@ -0,0 +1,22 @@
from django.db import models
class Issue(models.Model):
name = models.CharField(max_length=255)
date = models.DateField()
def __unicode__(self):
return self.name
class Article(models.Model):
author = models.ForeignKey("Contributor", blank=True, null=True)
title = models.CharField(max_length=255)
text = models.TextField()
issue = models.ForeignKey(Issue)
def __unicode__(self):
return self.title + " - " + self.author
class Contributor(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(blank=True, null=True)
def __unicode__(self):
return self.name + ": " + self.email

23
itf/erang/tests.py

@ -0,0 +1,23 @@
"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".
Replace these with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

1
itf/erang/views.py

@ -0,0 +1 @@
# Create your views here.

0
itf/festival/__init__.py

83
itf/festival/admin.py

@ -0,0 +1,83 @@
from django.contrib import admin
from models import *
class AudioInline(admin.StackedInline):
model = Audio
extra = 2
class ImageInline(admin.StackedInline):
model = Image
extra = 3
class DocumentInline(admin.StackedInline):
model = Document
extra = 2
class TalkAdmin(admin.ModelAdmin):
inlines = [AudioInline, ImageInline, DocumentInline]
save_on_top = True
list_display = ('__unicode__', 'presenter', 'session',)
list_filter = ['session']
search_fields = ('title', 'intro', 'presenter',)
#hide meeting field
class MeetingDayInline(admin.StackedInline):
model = MeetingDay
extra = 3
class ParticipantInline(admin.StackedInline):
model = Participant
extra = 3
class MeetingAdmin(admin.ModelAdmin):
inlines = [MeetingDayInline, ImageInline, DocumentInline, ParticipantInline]
prepopulated_fields = {"slug": ("title",)}
save_on_top = True
class ProjectAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
save_on_top = True
class SessionAdmin(admin.ModelAdmin):
search_fields = ('title', 'intro',)
list_filter = ['day']
list_display = ('__unicode__',)
class ParticipantAdmin(admin.ModelAdmin):
search_fields = ('title', 'short_bio',)
list_display = ('name', 'title', 'meeting',)
list_filter = ['meeting']
class CommentAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'is_displayed',)
list_editable = ('is_displayed',)
list_filter = ['meeting']
class SignupAdmin(admin.ModelAdmin):
search_fields = ('email',)
class ImageAdmin(admin.ModelAdmin):
search_fields = ('title', 'intro',)
list_filter = ['meeting', 'talk']
class AudioAdmin(admin.ModelAdmin):
search_fields = ('title', 'intro',)
list_filter = ['meeting', 'talk']
class VideoAdmin(admin.ModelAdmin):
search_fields = ('title', 'intro',)
list_filter = ['meeting', 'talk']
admin.site.register(Comment, CommentAdmin)
admin.site.register(Meeting, MeetingAdmin)
admin.site.register(Audio, AudioAdmin)
admin.site.register(Video, VideoAdmin)
admin.site.register(Image, ImageAdmin)
admin.site.register(Document)
admin.site.register(Project, ProjectAdmin)
#admin.site.register(MeetingDay)
admin.site.register(Session, SessionAdmin)
admin.site.register(Talk, TalkAdmin)
admin.site.register(Participant, ParticipantAdmin)
admin.site.register(Signup, SignupAdmin)
admin.site.register(CommentCaptcha)

11
itf/festival/forms.py

@ -0,0 +1,11 @@
from django import forms
from models import Comment
class MeetingCommentForm(forms.ModelForm):
pass
class Meta:
model = Comment
exclude = ['is_displayed', 'meeting', 'parent', 'posted_date']

132
itf/festival/models.py

@ -0,0 +1,132 @@
from django.db import models
import datetime
import time
class Comment(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(max_length=255)
comment = models.TextField()
is_displayed = models.BooleanField(default=True)
meeting = models.ForeignKey('Meeting')
parent = models.ForeignKey('Comment', default=0, related_name='child')
posted_date = models.DateTimeField(default=datetime.datetime.now())
def __unicode__(self):
return "%s by %s on %s" % (self.comment, self.name, self.posted_date,)
def epoch_date(self):
return time.mktime(self.posted_date.timetuple())
class CommentCaptcha(models.Model):
question = models.CharField(max_length=500)
answer = models.CharField(max_length=10)
def __unicode__(self):
return self.question
#Not using this class right now - but use this as a constant reminder ...
# class CommentVote(models.Model):
class Meeting(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
slug = models.SlugField()
def __unicode__(self):
return self.title
class Participant(models.Model):
name = models.CharField(max_length=255)
title = models.CharField(max_length=255, blank=True, null=True)
short_bio = models.TextField(max_length=255, blank=True, null=True)
meeting = models.ForeignKey('Meeting')
def __unicode__(self):
return self.name
class Talk(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
presenter = models.CharField(max_length=255)
session = models.ForeignKey('Session') # name of meeting - name of session
def __unicode__(self):
return "%s - %s" % (self.session.day.meeting.title, self.title) # name of meeting - name of session
class Session(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
day = models.ForeignKey('MeetingDay')
session_no = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return "%s - %s" % (self.day.meeting.title, self.title) # name of meeting - name of session
class MeetingDay(models.Model):
meeting = models.ForeignKey('Meeting')
meeting_date = models.DateField()
def __unicode__(self):
return "%s - %s" % (self.meeting, self.meeting_date)
class Audio(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
file = models.FileField(upload_to='upload/audio')
meeting = models.ForeignKey('Meeting', blank=True, null=True)
talk = models.ForeignKey('Talk', blank=True, null=True)
class Meta:
verbose_name_plural = "Audio"
def __unicode__(self):
return self.title
class Video(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
file = models.FileField(upload_to='upload/video')
meeting = models.ForeignKey('Meeting', blank=True, null=True)
talk = models.ForeignKey('Talk', blank=True, null=True)
def __unicode__(self):
return self.title
class Image(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
file = models.FileField(upload_to='upload/images')
meeting = models.ForeignKey('Meeting', blank=True, null=True)
talk = models.ForeignKey('Talk', blank=True, null=True)
def __unicode__(self):
return self.title
class Document(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
file = models.FileField(upload_to='upload/docs')
meeting = models.ForeignKey('Meeting', blank=True, null=True)
talk = models.ForeignKey('Talk', blank=True, null=True)
is_resource = models.BooleanField()
def __unicode__(self):
return self.title
class Project(models.Model):
title = models.CharField(max_length=255)
intro = models.TextField(blank=True, null=True)
start_date = models.DateField(blank=True, null=True)
end_date = models.DateField(blank=True, null=True)
slug = models.SlugField()
def __unicode__(self):
return self.title
class Signup(models.Model):
email = models.EmailField()
def __unicode__(self):
return self.email

23
itf/festival/tests.py

@ -0,0 +1,23 @@
"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".
Replace these with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

8
itf/festival/utils.py

@ -0,0 +1,8 @@
import re
def validateEmail(email):
if len(email) > 7:
if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email) != None:
return 1
return 0

178
itf/festival/views.py

@ -0,0 +1,178 @@
# Create your views here.
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse
from festival.models import *
from utils import validateEmail
from forms import MeetingCommentForm
import random
try:
import json
except:
import simplejson as json
from django.core.mail import send_mail
def index(request):
index_data = {}
new_meetings = MeetingDay.objects.all().order_by('-meeting_date')[:5] # get 5 latest meetings
projects = Project.objects.all().order_by('start_date')
index_data['latest_meetings'] = new_meetings
index_data['projects'] = projects
return render_to_response("festival_index.html", { 'data' : index_data })
def meeting_details(request, meeting_id):
meeting_data = {}
meeting_data['meeting'] = get_object_or_404(Meeting, id=meeting_id)
# meeting_data['sessions'] = Session.objects.filter(day__meeting__id=meeting_id) # get meetings session objs
meeting_data['talks'] = Talk.objects.filter(session__day__meeting__id=meeting_id)
meeting_data['images'] = Image.objects.filter(meeting__id=meeting_id)
meeting_data['sessions'] = Session.objects.filter(day__meeting__id=meeting_id).order_by("day").order_by("session_no")
meeting_data['documents'] = Document.objects.filter(meeting__id=meeting_id).exclude(talk__isnull=False)
meeting_data['comments'] = Comment.objects.filter(meeting__id=meeting_id).exclude(is_displayed=False)
captcha_length = CommentCaptcha.objects.all().count()
random_captcha = random.randint(1,captcha_length)
captcha = CommentCaptcha.objects.get(pk=random_captcha)
captcha_d = {
'question': captcha.question,
'id': captcha.id
}
for s in meeting_data['sessions']:
s.talks = Talk.objects.select_related('image', 'audio', 'document').filter(session__id=s.id)
for t in s.talks:
t.images = Image.objects.filter(talk__id=t.id)
t.documents = Document.objects.filter(talk__id=t.id)
t.audio = Audio.objects.filter(talk__id=t.id)
t.video = Video.objects.filter(talk__id=t.id)
meeting_data['imagegallery'] = Image.objects.filter(meeting__id=meeting_id)
meeting_data['participants'] = Participant.objects.filter(meeting__id=meeting_id).order_by('name')
comment_form = MeetingCommentForm()
return render_to_response("meeting.html", { 'data' : meeting_data, 'comment_form': comment_form, 'id': meeting_id, 'captcha': captcha_d })
def meetings(request):
meetings = list(Meeting.objects.all())
for m in meetings:
m.dates = MeetingDay.objects.filter(meeting__id=m.id).order_by('-meeting_date')
m.end_date = m.dates[0].meeting_date
m.start_date = m.dates[len(m.dates) - 1].meeting_date
meetings.sort(sort_meetings)
return render_to_response("meetings.html", {'meetings': meetings})
def meeting_comment(request):
if request.GET.has_key('captcha') and request.is_ajax():
captcha_answer = str(request.GET['captcha']).strip()
captcha_id = int(request.GET['captcha_id'])
captcha_obj = CommentCaptcha.objects.get(pk=captcha_id)
correct_answer = str(captcha_obj.answer).strip()
# print captcha_answer.lower + " " + correct_answer
if correct_answer.lower() != captcha_answer.lower():
r = {
'status': 0,
'msg': 'Please answer the question in the box correctly. Thanks.'
}
else:
comment_form = MeetingCommentForm(request.GET)
if comment_form.is_valid():
c = comment_form.save(commit=False)
meeting_id = int(request.GET['meeting_id'])
meeting_obj = Meeting.objects.get(pk=meeting_id)
c.meeting = meeting_obj
c.save()
r = {
'status': 1,
'msg': 'Comment saved.'
}
else:
#TODO: Pass validation errors properly accessing form.errors
r = {
'status': 0,
'msg': 'Please enter a valid email address. We will never display it publicly, sell it, or use it to send you unsolicited email. Thanks.'
}
else:
r = {
'status': 0,
'msg': 'Please answer the question in the box correctly. Thanks.'
}
return HttpResponse(json.dumps(r), mimetype="application/json")
def sort_meetings(m1, m2):
if m1.start_date < m2.end_date:
return 1
else:
return -1
def wireframe(request):
return render_to_response("festival_wireframe.html")
def erang(request):
return render_to_response("erang.html")
def publications(request):
return render_to_response("publications.html")
def surveys(request):
return render_to_response("surveys.html")
def home(request):
return render_to_response("home.html")
def projects(request):
projects = Project.objects.all();
return render_to_response("projects.html", {'projects': projects})
def resources(request):
resources = Document.objects.filter(is_resource=True)
return render_to_response("resources.html", {'resources': resources})
def people(request):
participants = Participant.objects.all().order_by('name')
l = []
l2 = []
for p in participants:
if p.name in l:
pass
else:
l.append(p.name)
l2.append(p)
participants = l2
return render_to_response("people.html", {'participants': participants})
def project(request, project_id):
project = get_object_or_404(Project, id=project_id)
return render_to_response("project.html", {'project': project})
def save_email(request):
email = request.GET['email']
if validateEmail(email):
t = Signup(email=email)
t.save()
return HttpResponse("1")
else:
return HttpResponse("0")
def email_signups(request):
to_emails = ['sanjaybhangar@gmail.com']
arr = []
for s in Signup.objects.all():
arr.append(s.email)
eml_list = "\n".join(arr)
message_pre = "Someone pinged http://theatreforum.in/emailsharvarialltheemails/ , so here it is: \n\n"
message = message_pre + eml_list
send_mail("List of Signups on theatreforum.in", message, 'do_not_reply@theatreforum.in', to_emails, fail_silently=False)
return HttpResponse("ok")
def video(request, video_id):
video = get_object_or_404(Video, id=video_id)
return render_to_response("video.html", {'video': video})

0
itf/itfcore/__init__.py

67
itf/itfcore/admin.py

@ -0,0 +1,67 @@
from django.contrib import admin
from django.contrib.auth.models import User
from models import *
#class NicknameInline(admin.StackedInline):
# model = Nickname
# extra = 3
#class LinkInlineModelAdmin(admin.InlineModelAdmin):
# pass
#class LinkInline(LinkInlineModelAdmin):
# model = Link
# extra = 3
class ProfileInline(admin.StackedInline):
model = Profile
extra = 1
class PerformanceAdmin(admin.ModelAdmin):
filter_horizontal = ('links', 'images')
class EventAdmin(admin.ModelAdmin):
filter_horizontal = ('links',)
class ProfileAdmin(admin.ModelAdmin):
filter_horizontal = ('links', 'files', 'images',)
# inlines = [NicknameInline]
# inlines = [LinkInline]
class VenueAdmin(admin.ModelAdmin):
ordering = ('name',)
prepopulated_fields = {'slug': ('name',)}
filter_horizontal = ('links', 'images')
class TheatreGroupAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('name',)}
filter_horizontal = ('links', 'files', 'images')
class ProductionAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('title',)}
filter_horizontal = ('links', 'files', 'images',)
inlines = [ProfileInline]
class ScriptAdmin(admin.ModelAdmin):
filter_horizontal = ('links', 'downloads')
#admin.site.register(Nickname3)
#admin.site.register(Nickname2)
admin.site.register(Performance, PerformanceAdmin)
admin.site.register(Event, EventAdmin)
admin.site.register(Location)
admin.site.register(ProfileProfile)
admin.site.register(ProfileGroup)
admin.site.register(Script, ScriptAdmin)
admin.site.register(Production, ProductionAdmin)
admin.site.register(Image)
admin.site.register(File)
admin.site.register(Link)
admin.site.register(RandomQuote)
admin.site.register(ProfileProduction)
admin.site.register(Nickname)
admin.site.register(TheatreGroup, TheatreGroupAdmin)
admin.site.register(Venue, VenueAdmin)
admin.site.register(Profile, ProfileAdmin)

58
itf/itfcore/fields.py

@ -0,0 +1,58 @@
from django.db import models
from django import forms
from django.utils.text import capfirst
class MultiSelectFormField(forms.MultipleChoiceField):
widget = forms.CheckboxSelectMultiple
def __init__(self, *args, **kwargs):
self.max_choices = kwargs.pop('max_choices', 0)
super(MultiSelectFormField, self).__init__(*args, **kwargs)
def clean(self, value):
if not value and self.required:
raise forms.ValidationError(self.error_messages['required'])
if value and self.max_choices and len(value) > self.max_choices:
raise forms.ValidationError('You must select a maximum of %s choice%s.'
% (apnumber(self.max_choices), pluralize(self.max_choices)))
return value
class MultiSelectField(models.Field):
__metaclass__ = models.SubfieldBase
def get_internal_type(self):
return "CharField"
def get_choices_default(self):
return self.get_choices(include_blank=False)
def _get_FIELD_display(self, field):
value = getattr(self, field.attname)
choicedict = dict(field.choices)
def formfield(self, **kwargs):
# don't call super, as that overrides default widget if it has choices
defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name),
'help_text': self.help_text, 'choices':self.choices}
if self.has_default():
defaults['initial'] = self.get_default()
defaults.update(kwargs)
return MultiSelectFormField(**defaults)
def get_db_prep_value(self, value):
if isinstance(value, basestring):
return value
elif isinstance(value, list):
return ",".join(value)
def to_python(self, value):
if isinstance(value, list):
return value
return value.split(",")
def contribute_to_class(self, cls, name):
super(MultiSelectField, self).contribute_to_class(cls, name)
if self.choices:
func = lambda self, fieldname = name, choicedict = dict(self.choices):",".join([choicedict.get(value,value) for value in getattr(self,fieldname)])
setattr(cls, 'get_%s_display' % self.name, func)

253
itf/itfcore/models.py

@ -0,0 +1,253 @@
from django.db import models
from django.contrib.auth.models import User
import datetime
from fields import MultiSelectField, MultiSelectFormField
import multilingual
from django.utils.translation import ugettext as _
EVENT_TYPES = (
('workshop', 'Workshop'),
('seminar', 'Seminar'),
('exhibition', 'Exhibition'),
('course', 'Course / Training'),
('other', 'Other'),
)
OCCUPATION_TYPES = (
('make_up_artist', 'Make-up Artist'),
('director', 'Director'),
('actor', 'Actor'),
('other', 'Other'),
)
FILE_TYPES = (
('audio', 'Audio'),
('video', 'Video'),
('pdf', 'PDF'),
('text', 'Text Document'),
('other', 'Other'),
)
PP_RELATION_TYPES = (
('friend', 'Friend'),
('worked_under', 'Worked Under'),
('worked_with', 'Worked with'),
('directed', 'Directed'),
('fanof', 'Fan Of'),
('other', 'Other'),
)
PG_RELATION_TYPES = (
('member', 'Member'),
('admin', 'Admin'),
('fan', 'Fan'),
('other', 'Other'),
)
class Script(models.Model):
author = models.CharField(max_length=255)
downloads = models.ManyToManyField('File', blank=True)
links = models.ManyToManyField('Link', blank=True)
language = models.CharField(max_length=50, blank=True)
class Translation(multilingual.Translation):
title = models.CharField(max_length=255)
synopsis = models.TextField(blank=True)
def __unicode__(self):
return self.title
class ProfileProduction(models.Model):
profile = models.ForeignKey('Profile')
production = models.ForeignKey('Production')
role = models.CharField(max_length=255)
is_approved = models.BooleanField(default=False)
is_original = models.BooleanField(default=False)
def __unicode__(self):
return self.role
class Meta:
verbose_name = 'Peoples Role in Production'
class Production(models.Model):
title = models.CharField(max_length=255)
description = models.TextField(blank=True)
author = models.ForeignKey('Profile', related_name="AuthoredProduction")
director = models.ForeignKey('Profile', related_name="DirectedProduction")
cast = models.ManyToManyField('Profile', through='ProfileProduction', blank=True, symmetrical=False)
theatregroup = models.ForeignKey('TheatreGroup', blank=True, null=True, verbose_name="Theatre Group")
script = models.ForeignKey('Script', blank=True, null=True)
images = models.ManyToManyField('Image', blank=True)
files = models.ManyToManyField('File', blank=True)
links = models.ManyToManyField('Link', blank=True)
language = models.CharField(max_length=50, blank=True)
slug = models.SlugField()
def get_absolute_url(self):
return "/production/" + str(self.id)
def __unicode__(self):
return self.title
#class Nickname2(models.Model):
# name = models.CharField('Nick2', max_length=255, blank=True)
## nick_profile = models.ForeignKey('Profile')
# def __unicode__(self):
# return self.name
#class Nickname3(models.Model):
# name = models.CharField('Nick3', max_length=255, blank=True)
## nick_profile = models.ForeignKey('Profile')
# def __unicode__(self):
# return self.name
class Nickname(models.Model):
name = models.CharField('Nick', max_length=255, blank=True)
profile = models.ForeignKey('Profile')
def __unicode__(self):
return self.name
class Profile(models.Model):
user = models.ForeignKey(User, blank=True, unique=True, null=True)
phone = models.CharField(max_length=255, blank=True)
email = models.CharField(max_length=255, blank=True)
groups = models.ManyToManyField('TheatreGroup', through='ProfileGroup', blank=True, symmetrical=False)
occupation = MultiSelectField(max_length=1000, choices=OCCUPATION_TYPES, verbose_name="Occupation Type", blank=True)
connections = models.ManyToManyField('Profile', through='ProfileProfile', blank=True, symmetrical=False)
profile_image = models.ForeignKey('Image', blank=True, null=True, related_name="profile_image")
dob = models.DateField(blank=True, verbose_name="DoB", null=True)
location = models.ForeignKey('Location', blank=True, null=True)
images = models.ManyToManyField('Image', blank=True)
files = models.ManyToManyField('File', blank=True)
links = models.ManyToManyField('Link', blank=True)
related_productions = models.ManyToManyField('Production', blank=True, null=True)
# nickname = models.ForeignKey(Nickname, blank=True, null=True)
# nickname2 = models.ForeignKey('Nickname2', related_name="MyNick", blank=True)
# nickname3 = models.ManyToManyField('Nickname3', blank=True)
class Translation(multilingual.Translation):
firstname = models.CharField(max_length=255, verbose_name=_("First Name"))
lastname = models.CharField(max_length=255, blank=True, verbose_name=_("Last Name"))
about = models.TextField(blank=True)
def __unicode__(self):
return self.firstname + " " + self.lastname
class Venue(models.Model):
name = models.CharField(max_length=255)
location = models.ForeignKey('Location')
images = models.ManyToManyField('Image', blank=True)
links = models.ManyToManyField('Link', blank=True)
slug = models.SlugField()
def __unicode__(self):
return self.name
class Performance(models.Model):
production = models.ForeignKey('Production')
venue = models.ForeignKey('Venue', blank=True, null=True)
datetime = models.DateTimeField(verbose_name="Date & Time", blank=True, null=True)
ticketslink = models.URLField(max_length=255, blank=True, verbose_name="Tickets link")
images = models.ManyToManyField('Image', blank=True)
links = models.ManyToManyField('Link', blank=True)
def __unicode__(self):
return self.production
class Meta:
get_latest_by = "datetime"
class Event(models.Model):
title = models.CharField(max_length=255, blank=True)
synopsis = models.TextField(blank=True)
venue = models.ForeignKey('Venue')
theatregroup = models.ForeignKey('TheatreGroup', blank=True, null=True, verbose_name="Theatre Group")
time = models.DateTimeField(blank=True, null=True)
eventtype = models.CharField(max_length=255, choices=EVENT_TYPES, verbose_name="Event Type")
links = models.ManyToManyField('Link', blank=True)
cost = models.CharField(max_length=255, blank=True)
language = models.ForeignKey("Language", blank=True, null=True)
def __unicode__(self):
return self.title
class Language(models.Model):
name = models.CharField(max_length=100)
short_name = models.CharField(max_length=3)
class Location(models.Model):
address = models.TextField(blank=True)
lat = models.CharField(max_length=255, blank=True, verbose_name="Latitude", editable=False)
lon = models.CharField(max_length=255, blank=True, verbose_name="Longitude", editable=False)
def __unicode__(self):
return self.address
class ProfileProfile(models.Model):
fromProfile = models.ForeignKey('Profile', related_name='relatedFrom', verbose_name="From Profile")
toProfile = models.ForeignKey('Profile', related_name='relatedTo', verbose_name="To Profile")
rel_type = MultiSelectField(max_length=1000, choices=PP_RELATION_TYPES, verbose_name="Relation Type")
is_approved = models.BooleanField(default=False)
class Meta:
verbose_name = 'Person to Person Relation'
class TheatreGroup(models.Model):
name = models.CharField(max_length=255)
about = models.TextField(blank=True)
location = models.ManyToManyField('Location', blank=True)
images = models.ManyToManyField('Image', blank=True)
files = models.ManyToManyField('File', blank=True)
links = models.ManyToManyField('Link', blank=True)
slug = models.SlugField()
def __unicode__(self):
return self.name
class ProfileGroup(models.Model):
profile = models.ForeignKey('Profile')
group = models.ForeignKey('TheatreGroup')
rel_type = MultiSelectField(max_length=1000, choices=PG_RELATION_TYPES, verbose_name="Relation Type")
is_approved = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
class Meta:
verbose_name = 'Person to Theatre Group Relation'
class Image(models.Model):
image = models.ImageField(upload_to='/profiles/', width_field='width', height_field='height', null=False)
width = models.IntegerField(editable=False)
height = models.IntegerField(editable=False)
caption = models.CharField(max_length=255, blank=True)
def __unicode__(self):
if self.caption:
return self.caption
else:
return self.path
class File(models.Model):
file = models.FileField(upload_to='/uploads/')
file_type = models.CharField(max_length=255, choices=FILE_TYPES, verbose_name="File Type")
description = models.TextField(blank=True)
def __unicode__(self):
return self.caption
class RandomQuote(models.Model):
quote = models.TextField()
author = models.CharField(max_length=255)
class Link(models.Model):
url = models.URLField()
caption = models.CharField(max_length=255, blank=True)
# related_profile = models.ForeignKey(Profile)
def __unicode__(self):
if self.caption:
return self.caption
else:
return self.url

49
itf/itfcore/views.py

@ -0,0 +1,49 @@
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.contrib import admin
from settings import LANGUAGES
import simplejson
import sys
def index(request):
return HttpResponse("India Theatre Forum - Coming Soon")
def getLanguages(request):
languages = LANGUAGES
langArr = []
for l in languages:
langDict = {}
langDict['short'] = l[0]
langDict['long'] = l[1]
langArr.append(langDict)
print langArr
json = simplejson.dumps(langArr)
return HttpResponse(json, mimetype='application/javascript')
def mockup(request):
return render_to_response("mockup.html")
def allnews(request):
return render_to_response("x0news.html")
def disc(request):
return render_to_response("x0disc.html")
def multi(request):
return render_to_response("x0multi.html")
def resources(request):
return render_to_response("x0resources.html")
def erang(request):
return render_to_response("x0erang.html")
def profile(request):
return render_to_response("x0profile.html")
def googlehosted(request):
return HttpResponse('googlefffffffffc014cb4')
# Create your views here.

11
itf/manage.py

@ -0,0 +1,11 @@
#!/usr/bin/python
from django.core.management import execute_manager
try:
import settings # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
if __name__ == "__main__":
execute_manager(settings)

1
itf/meetingdata.json

File diff suppressed because one or more lines are too long

113
itf/monitor.py

@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import sys
import time
import signal
import threading
import atexit
import Queue
_interval = 1.0
_times = {}
_files = []
_running = False
_queue = Queue.Queue()
_lock = threading.Lock()
def _restart(path):
_queue.put(True)
prefix = 'monitor (pid=%d):' % os.getpid()
print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
print >> sys.stderr, '%s Triggering process restart.' % prefix
os.kill(os.getpid(), signal.SIGINT)
def _modified(path):
try:
# If path doesn't denote a file and were previously
# tracking it, then it has been removed or the file type
# has changed so force a restart. If not previously
# tracking the file then we can ignore it as probably
# pseudo reference such as when file extracted from a
# collection of modules contained in a zip file.
if not os.path.isfile(path):
return path in _times
# Check for when file last modified.
mtime = os.stat(path).st_mtime
if path not in _times:
_times[path] = mtime
# Force restart when modification time has changed, even
# if time now older, as that could indicate older file
# has been restored.
if mtime != _times[path]:
return True
except:
# If any exception occured, likely that file has been
# been removed just before stat(), so force a restart.
return True
return False
def _monitor():
while 1:
# Check modification times on all files in sys.modules.
for module in sys.modules.values():
if not hasattr(module, '__file__'):
continue
path = getattr(module, '__file__')
if not path:
continue
if os.path.splitext(path)[1] in ['.pyc', '.pyo', '.pyd']:
path = path[:-1]
if _modified(path):
return _restart(path)
# Check modification times on files which have
# specifically been registered for monitoring.
for path in _files:
if _modified(path):
return _restart(path)
# Go to sleep for specified interval.
try:
return _queue.get(timeout=_interval)
except:
pass
_thread = threading.Thread(target=_monitor)
_thread.setDaemon(True)
def _exiting():
try:
_queue.put(True)
except:
pass
_thread.join()
atexit.register(_exiting)
def track(path):
if not path in _files:
_files.append(path)
def start(interval=1.0):
global _interval
if interval < _interval:
_interval = interval
global _running
_lock.acquire()
if not _running:
_running = True
_thread.start()
_lock.release()

125
itf/settings.py

@ -0,0 +1,125 @@
# Django settings for theatre project.
import os
from os.path import join
DEBUG = True
TEMPLATE_DEBUG = DEBUG
LOCAL_DEVELOPMENT = True
LOGGING_INTERCEPT_REDIRECTS = True
LOGGING_LOG_SQL = True
LOGGING_SHOW_METRICS = True
LOGGING_OUTPUT_ENABLED = True
PROJECT_PATH = os.path.dirname(__file__)
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
INTERNAL_IPS = ('127.0.0.1',)
MANAGERS = ADMINS
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'theatre' # Or path to database file if using sqlite3.
DATABASE_USER = 'root' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('en', 'English'),
('hi', 'Hindi'),
('kn', 'Kannada'),
)
DEFAULT_LANGUAGE = 1
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = join(PROJECT_PATH, 'static')
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"multilingual.context_processors.multilingual",
)
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = '/static/'
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/admin/media/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'fognneiw#s_o-#^tiny@^f-$x#1&29$3a37w5=kll57i!^uo@r'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
'django.template.loaders.eggs.load_template_source',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'multilingual.middleware.DefaultLanguageMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
# 'djangologging.middleware.LoggingMiddleware',
)
#SOLR_ROOT = '/home/sanj/satan/apache-solr-1.3.0/example/'
#SOLR_SCHEMA_PATH = SOLR_ROOT + 'solr/conf/schema.xml'
#SOLR_DATA_DIR = SOLR_ROOT + 'solr/data'
ROOT_URLCONF = 'urls'
TEMPLATE_DIRS = (
join(PROJECT_PATH, 'templates'),
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'itfcore',
'festival',
'erang',
# 'solango',
'multilingual',
# 'multilingual.flatpages',
'django_extensions',
'debug_toolbar',
'sorl.thumbnail',
)

63
itf/static/css/colorbox.css

@ -0,0 +1,63 @@
/*
ColorBox Core Style
The following rules are the styles that are consistant between themes.
Avoid changing this area to maintain compatability with future versions of ColorBox.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative; overflow:hidden;}
#cboxLoadedContent{overflow:auto;}
#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
/*
Example user style
The following rules are ordered and tabbed in a way that represents the
order/nesting of the generated HTML, so that the structure easier to understand.
*/
#cboxOverlay{background:url(/static/images/overlay.png) 0 0 repeat;}
#colorbox{}
#cboxTopLeft{width:21px; height:21px; background:url(/static/images/controls.png) -100px 0 no-repeat;}
#cboxTopRight{width:21px; height:21px; background:url(/static/images/controls.png) -129px 0 no-repeat;}
#cboxBottomLeft{width:21px; height:21px; background:url(/static/images/controls.png) -100px -29px no-repeat;}
#cboxBottomRight{width:21px; height:21px; background:url(/static/images/controls.png) -129px -29px no-repeat;}
#cboxMiddleLeft{width:21px; background:url(/static/images/controls.png) left top repeat-y;}
#cboxMiddleRight{width:21px; background:url(/static/images/controls.png) right top repeat-y;}
#cboxTopCenter{height:21px; background:url(/static/images/border.png) 0 0 repeat-x;}
#cboxBottomCenter{height:21px; background:url(/static/images/border.png) 0 -29px repeat-x;}
#cboxContent{background:#fff;}
#cboxLoadedContent{margin-bottom:28px;}
#cboxTitle{position:absolute; bottom:3px; left:0; text-align:center; width:100%; color:#949494; font-size: 13px;}
#cboxCurrent{position:absolute; bottom:3px; left:58px; color:#949494;}
#cboxSlideshow{position:absolute; bottom:3px; right:30px; color:#0092ef;}
#cboxPrevious{position:absolute; bottom:0; left:0px; background:url(/static/images/controls.png) -75px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
#cboxPrevious.hover{background-position:-75px -25px;}
#cboxNext{position:absolute; bottom:0; left:27px; background:url(/static/images/controls.png) -50px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
#cboxNext.hover{background-position:-50px -25px;}
#cboxLoadingOverlay{background:url(/static/images/loading_background.png) center center no-repeat;}
#cboxLoadingGraphic{background:url(/static/images/loading.gif) center center no-repeat;}
#cboxClose{position:absolute; bottom:0; right:0; background:url(/static/images/controls.png) -25px 0px no-repeat; width:25px; height:25px; text-indent:-9999px;}
#cboxClose.hover{background-position:-25px -25px;}
/*
The following fixes png-transparency for IE6.
It is also necessary for png-transparency in IE7 & IE8 to avoid 'black halos' with the fade transition
Since this method does not support CSS background-positioning, it is incompatible with CSS sprites.
Colorbox preloads navigation hover classes to account for this.
!! Important Note: AlphaImageLoader src paths are relative to the HTML document,
while regular CSS background images are relative to the CSS document.
*/
.cboxIE #cboxTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderTopLeft.png, sizingMethod='scale');}
.cboxIE #cboxTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderTopCenter.png, sizingMethod='scale');}
.cboxIE #cboxTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderTopRight.png, sizingMethod='scale');}
.cboxIE #cboxBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderBottomLeft.png, sizingMethod='scale');}
.cboxIE #cboxBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderBottomCenter.png, sizingMethod='scale');}
.cboxIE #cboxBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderBottomRight.png, sizingMethod='scale');}
.cboxIE #cboxMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderMiddleLeft.png, sizingMethod='scale');}
.cboxIE #cboxMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/static/images/internet_explorer/borderMiddleRight.png, sizingMethod='scale');}

10
itf/static/css/error_pages.css

@ -0,0 +1,10 @@
.errorTxt {
text-align: center;
padding: 25px;
width: 70%;
margin-left: auto;
margin-right: auto;
color: #333;
font-weight: bold;
font-size: 18px;
}

113
itf/static/css/festival.css

@ -0,0 +1,113 @@
body, html {
margin: 0px;
padding: 0px;
font-family: Arial, Georgia, Helvetica, mono;
background: #ee9b11;
}
#wrapper {
background: url('/static/images/bg1.jpg') no-repeat;
border: 0px solid #000;
width: 1016px;
height: 175px;
z-index: 1000;
margin-top: 0px;
margin-left: auto;
margin-right: auto;
padding: 0px;
}
#header {
width: 100%;
height: 100px;
position: relative;
/* background: #1f1a17; */
}
#body_wrapper {
width: 100%;
}
#leftCol {
float: left;
width: 200px;
padding-top: 25px;
}
#centerCol {
margin-top: 25px;
width: 540px;
float: left;
overflow: auto;
padding-left: 5px;
margin-left: 0px;
}
#rightCol {
margin-top: 25px;
margin-left: 5px;
text-align: left;
width: 240px;
float: left;
background: #f8c301;
padding-left: 3px;
padding-right: 3px;
padding-bottom: 25px;
}
#rightCol h1 {
padding-top: 0px;
}
#newsletter_signup
{
text-align: right;
}
#email
{
}
#meeting_list {
}
#meeting_list_title {
}
.box
{
margin: 30px 5px 15px 10px;
border: #3c5a86 1px dashed;
padding:5px;
font-size: 12px;
font-weight: normal;
color: #000000;
background-color: #d1e0ef;
}
.box a
{
text-decoration: none;
color: #142908;
}
.box H1
{
margin : 0px 0px -12px 5px;
position: relative;
top : -12px;
border: #3c5a86 1px solid;
padding-top : 3px;
padding-bottom: 3px;
padding-left : 5px;
padding-right : 5px;
font-size : 18px;
font-weight: bold;
color : #000000;
display: inline;
background-color: #99bbdd;
}

54
itf/static/css/festival_index.css

@ -0,0 +1,54 @@
body {
margin: 0px;
padding: 0px;
}
#leftbox
{
}
#rightbox
{
}
#meeting_list {
}
#meeting_list_title {
}
.box
{
margin: 30px 5px 15px 10px;
border: #3c5a86 1px dashed;
padding:5px;
font-size: 12px;
font-weight: normal;
color: #000000;
background-color: #d1e0ef;
}
.box a
{
text-decoration: none;
color: #142908;
}
.box H1
{
margin : 0px 0px -12px 5px;
position: relative;
top : -12px;
border: #3c5a86 1px solid;
padding-top : 3px;
padding-bottom: 3px;
padding-left : 5px;
padding-right : 5px;
font-size : 18px;
font-weight: bold;
color : #000000;
display: inline;
background-color: #99bbdd;
}

184
itf/static/css/fullcalendar.css

@ -0,0 +1,184 @@
/* top area w/ month title and buttons */
.full-calendar-title {
text-align: left;
}
.full-calendar-buttons {
float: right;
margin: 0 0 1em;
}
.full-calendar-buttons button {
vertical-align: middle;
margin: 0 0 0 5px;
font-size: 1em;
}
.full-calendar-buttons button span {
padding: 0 10px;
}
/* To always display the "today" button:
*
* .full-calendar-buttons button.today {
* visibility: visible !important;
* }
*/
/* table layout & outer border */
.full-calendar-month-wrap {
clear: both;
border: 1px solid #333; /* outer border color & style */
}
.full-calendar-month {
width: 100%;
overflow: hidden;
}
.full-calendar-month table {
border-collapse: collapse;
border-spacing: 0;
}
/* cell styling */
.full-calendar-month th,
.full-calendar-month td.day {
padding: 0;
vertical-align: top;
border-style: solid; /* inner border style */
border-color: #333; /* inner border color */
border-width: 1px 0 0 1px;
}
.full-calendar-month th {
border-top: 0;
text-align: center;
}
.full-calendar-month th.first,
.full-calendar-month td.first {
border-left: 0;
}
.full-calendar-month td.today {
background: #FFFFCC;
}
.full-calendar-month .day-number {
text-align: right;
padding: 0 2px;
}
.full-calendar-month .other-month .day-number {
color: #fff;
}
.full-calendar-month .day-content {
padding: 2px 2px 0; /* distance between events and day edges */
}
/* FullCalendar automatically chooses a cell's height,
* but this can be overridden:
*
* .full-calendar-month td.day {
* height: 100px !important;
* }
*/
/* event styling */
.full-calendar-month .event {
margin-bottom: 2px;
font-size: .85em;
cursor: pointer;
text-align: left;
}
.full-calendar-month .ui-draggable-dragging td {
cursor: move;
}
.full-calendar-month .event td {
background: #C1D9EC;
padding: 0;
}
.full-calendar-month .event td.ne,
.full-calendar-month .event td.nw,
.full-calendar-month .event td.se,
.full-calendar-month .event td.sw {
background: none;
width: 1px; /* <-- remove if you dont want "rounded" corners */
height: 1px; /* <-- */
}
.full-calendar-month .nobg td {
background: none;
}
.full-calendar-month .event td.c {
padding: 0 2px;
}
.full-calendar-month .event-time {
font-weight: bold;
}
/* To change the color of events on a per-class basis (such as with the
* "className" attribute of a CalEvent), do something like this:
*
* .full-calendar-month .myclass td {
* background: green;
* }
*/
/* the rectangle that covers a day when dragging an event */
.full-calendar-month .over-day {
background: #ADDBFF;
opacity: .2;
filter: alpha(opacity=20); /* for IE */
}
/* right-to-left support */
.r2l .full-calendar-title {
text-align: right;
}
.r2l .full-calendar-buttons {
float: left;
}
.r2l .full-calendar-buttons button {
margin: 0 5px 0 0;
}
.r2l .full-calendar-month .day-number {
text-align: left;
}
.r2l .full-calendar-month .event {
text-align: right;
}

419
itf/static/css/index.css

@ -0,0 +1,419 @@
body {
background: #D5DBE8;
}
ul {
list-style-type: none;
margin-left: 3px;
margin-top: 0px;
padding-left: 3px;
}
.loggedIn {
float: left;
}
#loggedInButtons {
width: 300px;
margin-left: auto;
margin-right: auto;
}
#header {
position: fixed;
z-index: 25000;
left: 0px;
top: 0px;
height: 50px;
width: 100%;
text-align: center;
background: #000;
font-size: 14px;
color: #fff;
border-bottom: 1px dashed #f00;
}
#mainWrapper {
position: relative;
top: 50px;
}
#searchDiv {
position: absolute;
right: 5px;
top: 0px;
}
#leftBar {
float: left;
width: 19%;
height: 100%;
}
#locationSelect {
text-align: center;
background: #361848;
border: 2px solid #61AAF2;
padding: 4px;
color: #fff;
font-weight: bold;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
}
#center {
float: left;
width: 60%;
}
#rightBar {
float: left;
width: 19%;
height: 100%;
}
.toplink {
cursor: pointer;
color: #eee;
font-size: 11px;
text-decoration: underline;
position: relative;
left: -12px;
}
.toplink:hover {
color: #f00;
}
.small {
font-size: 10px;
color: yellow;
}
#signUp {
color: #E21515;
font-size: 20px;
font-weight: bolder;
}
#title {
font-size: 18px;
letter-spacing: 2px;
font-weight: bold;
color: #361848;
}
#loginDiv {
font-size: 13px;
color: #ccc;
}
#signupDiv {
position: absolute;
top: 16px;
left: 65%;
}
.topBtn {
font-weight: bold;
font-size: 16px;
cursor: pointer;
}
.dialogBox {
position: fixed;
top: 50px;
left: 25%;
width: 50%;
text-align: center;
background: #2B86E0;
border: 1px dashed #361848;
display: none;
padding: 4px;
}
.dialogTitle {
position: relative;
background: #61AAF2;
margin-bottom: 4px;
color: #666;
font-weight: bold;
}
.closeBtn {
position: absolute;
cursor: pointer;
color: #f00;
font-size: 18px;
right: 4px;
top: 1px;
}
#centerBtns {
width: 700px;
margin-left: auto;
margin-right: auto;
background: #61AAF2;
margin-bottom: 10px;
}
.centerBtn {
float: left;
margin-right: 5px;
border: 2px solid #61AAF2;
color: #61AAF2;
font-size: 13px;
font-weight: bold;
background: #361848;
padding: 6px;
cursor: pointer;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
.centerBtnHover {
color: #FCB281;
}
.centerBtnSelected {
color: #fff;
}
.tab {
display: none;
}
#tabContainer {
margin-top: 20px;
padding-top: 10px;
width: 96%;
margin-left: 2%;
margin-right: 2%;
height: 100%;
clear: both;
}
#leftTabs {
padding-top: 12px;
}
.leftTab {
background: #61AAF2;
border: 1px dashed #361848;
margin-bottom: 3px;
width: 96%;
margin-left: auto;
margin-right: auto;
padding-top: 2px;
padding-bottom: 2px;
padding-left: 5px;
color: #361848;
cursor: pointer;
font-weight: bold;
}
.leftTabContent {
display: none;
position: relative;
width: 97%;
margin-left: 1%;
margin-right: 2%;
border-left: 1px dashed #361848;
border-right: 1px dashed #361848;
border-bottom: 1px dashed #361848;
border-top: 1px dotted #D5DBE8;
top: -8px;
padding-top: 1px;
padding-bottom: 0px;
margin-bottom: 0px;
background: #61AAF2;
font-size: 11px;
font-weight: bold;
color: #333;
}
.leftTabContent a {
text-decoration: none;
color: #444;
}
.leftTabContent a:hover {
color: #FCB281;
}
.seeAll {
position: absolute;
bottom: 0px;
right: 10px;
color: #f00;
font-size: 10px;
cursor: pointer;
}
#adminMessageBox {
position: relative;
width: 60%;
margin-left: auto;
margin-right: auto;
text-align: center;
background: yellow;
margin-bottom: 4px;
border: 1px dashed #f00;
}
#basicLinks {
}
.basicLink {
position: relative;
height: 24px;
width: 100%;
cursor: pointer;
background: #ccc;
opacity: 0.5;
margin: 5px;
}
.basicLinkInner {
height: 24px;
width: 70px;
z-index: 100;
position: absolute;
right: 1px;
font-weight: bold;
opacity: 1.0;
}
.basicLinkInner a {
text-decoration: none;
}
#map {
width: 100%;
height: 100%;
}
#footer
{
position: fixed;
bottom: 0px;
left: 0px;
width: 100%;
height: 28px;
background-color: #000;
border-top: 1px dashed #f00;
z-index: 500;
}
#footer-nav {
position: absolute;
text-align: center;
bottom: 4px;
color: #000;
height: 18px;
width: 100%;
}
#footer-nav ul,
#footer-nav li {
display: inline;
}
#mycarousel {
width: 100px;
}
.center-div
{
position: relative;
margin-bottom: 10px;
padding: 15px;
width: 95%;
background: #2B86E0;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
}
.roundborder
{
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
}
.multi-content
{
font-size: 12px;
}
#photoID {
height: 300px;
}
#multi-categories {
}
#multi-video {
}
#multi-audio {
}
#multi-images {
}
h2 {
font-size: 13px;
}
#itfList li {
border: 1px solid #000;
background: #000;
color: #fff;
margin-bottom: 7px;
padding: 5px;
font-size: 12px;
cursor: pointer;
}
#itfBox {
border: 2px solid #fff;
margin-top: 15px;
padding: 4px;
}
.seemore
{
float: right;
bottom: 10px;
font-size: 11px;
}
.seemore a
{
font-weight: bold;
color:black;
text-decoration:none;
}
.content-ul
{
}
.content-ul li
{
display: inline;
list-style-type: none;
padding-right: 20px;
font-size: 12px;
}

65
itf/static/css/jScrollPane.css

@ -0,0 +1,65 @@
.jScrollPaneContainer {
position: relative;
overflow: hidden;
z-index: 1;
}
.jScrollPaneTrack {
position: absolute;
cursor: pointer;
right: 0;
top: 0;
height: 100%;
background: #aaa;
}
.jScrollPaneDrag {
position: absolute;
background: #666;
cursor: pointer;
overflow: hidden;
}
.jScrollPaneDragTop {
position: absolute;
top: 0;
left: 0;
overflow: hidden;
}
.jScrollPaneDragBottom {
position: absolute;
bottom: 0;
left: 0;
overflow: hidden;
}
a.jScrollArrowUp {
display: block;
position: absolute;
z-index: 1;
top: 0;
right: 0;
text-indent: -2000px;
overflow: hidden;
background-color: #666;
height: 9px;
}
a.jScrollArrowUp:hover {
background-color: #f60;
}
a.jScrollArrowDown {
display: block;
position: absolute;
z-index: 1;
bottom: 0;
right: 0;
text-indent: -2000px;
overflow: hidden;
background-color: #666;
height: 9px;
}
a.jScrollArrowDown:hover {
background-color: #f60;
}
a.jScrollActiveArrowButton, a.jScrollActiveArrowButton:hover {
background-color: #f00;
}

49
itf/static/css/jcarousel.css

@ -0,0 +1,49 @@
/**
* This <div> element is wrapped by jCarousel around the list
* and has the classname "jcarousel-container".
*/
.jcarousel-container {
position: relative;
}
.jcarousel-clip {
z-index: 2;
padding: 0;
margin: 0;
overflow: hidden;
position: relative;
}
.jcarousel-list {
z-index: 1;
overflow: hidden;
position: relative;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
.jcarousel-list li,
.jcarousel-item {
float: left;
list-style: none;
/* We set the width/height explicitly. No width/height causes infinite loops. */
width: 75px;
height: 75px;
}
/**
* The buttons are added dynamically by jCarousel before
* the <ul> list (inside the <div> described above) and
* have the classnames "jcarousel-next" and "jcarousel-prev".
*/
.jcarousel-next {
z-index: 3;
display: none;
}
.jcarousel-prev {
z-index: 3;
display: none;
}

50
itf/static/css/jcarouselskin.css

@ -0,0 +1,50 @@
/**
* This <div> element is wrapped by jCarousel around the list
* and has the classname "jcarousel-container".
*/
.jcarousel-container {
position: relative;
}
.jcarousel-clip {
z-index: 2;
padding: 0;
margin: 0;
overflow: hidden;
position: relative;
}
.jcarousel-list {
z-index: 1;
overflow: hidden;
position: relative;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
.jcarousel-list li,
.jcarousel-item {
float: left;
list-style: none;
/* We set the width/height explicitly. No width/height causes infinite loops. */
width: 75px;
height: 75px;
}
/**
* The buttons are added dynamically by jCarousel before
* the <ul> list (inside the <div> described above) and
* have the classnames "jcarousel-next" and "jcarousel-prev".
*/
.jcarousel-next {
z-index: 3;
display: none;
}
.jcarousel-prev {
z-index: 3;
display: none;
}

406
itf/static/css/jquery-ui-1.7.2.custom.css

@ -0,0 +1,406 @@
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { background: #FFFCC7 url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
/*.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; }
*/
.ui-widget-header { border-bottom: 1px solid #e78f08; color: #ffffff; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------#852002;---------f6f6f6-------#1c94c4;--*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #ddd5a4 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; color: #1c94c4; outline: none; font-size: 12px;}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #852002; text-decoration: none; outline: none; font-size: 12px; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; color: #c77405; outline: none; font-size: 12px;}
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; font-size: 12px;}
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #FFFCC7 url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-size: 12px; color: #eb8f00; outline: none; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #852002; outline: none; text-decoration: none; font-size: 12px; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
/* .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } */
/* Overlays */
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: .2em; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; background-color: #EE9B11; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .1em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }

9
itf/static/css/jquery.tooltip.css

@ -0,0 +1,9 @@
#tooltip {
position: absolute;
z-index: 3000;
border: 1px solid #111;
background-color: #eee;
padding: 5px;
opacity: 0.85;
}
#tooltip h3, #tooltip div { margin: 0; }

104
itf/static/css/meeting.css

@ -0,0 +1,104 @@
.session {
margin-bottom: 10px;
}
.tabText {
width: 90%;
overflow-x: hide;
font-size: 12px;
}
#tabs {
font-family: Arial, Georgia, Helvetica, mono !important;
}
#tabs ul {
font-size: 11px;
}
.ui-tabs-hide {
position: absolute;
left: -10000px;
display: block;
}
.sessionIntro {
/* margin-bottom: 15px; */
font-size: 11px;
}
.sessionTitle {
cursor: pointer;
/* margin-bottom: 10px; */
font-size: 12px;
color: #c73e2b;
font-weight: bold;
}
.sessionChild {
display: none;
}
.talksTitle {
font-weight: bold;
margin-bottom: 10px;
font-size: 12px;
}
.talkIcons {
margin-bottom: 10px;
}
.myToolTip {
width: 350px;
font-size: 14px;
}
.ttIntro {
font-size 12px;
font-weight: normal;
}
.rightclickHelp {
font-style: italic;
font-size: 11px;
display: block;
font-weight: normal;
}
.tabTitle {
color: #582E1E;
text-align: left;
}
.talks li {
font-weight: bold;
}
.readingMatTitle a, .readingMatTitle a:visited {
text-decoration: none !important;
font-weight: bold;
color: #c73e2b;
}
.readingMatTitle a:hover {
color: #5f3326;
font-weight: bold;
}
#commentForm {
font-size: 13px;
}
#comment_form_errors {
color: #FF4400;
font-weight: bold;
}
.comment {
padding-bottom: 5px;
}
.comment_meta span {
font-weight: bold;
}

28
itf/static/css/people.css

@ -0,0 +1,28 @@
.pName {
text-align: left;
cursor: pointer;
font-weight: bold;
text-decoration: none;
font-size: 14px;
}
.pName a:link, .pName a:visited {
text-decoration: none;
font-size: 13px;
color: #852002 !important;
}
.pName a:hover {
text-decoration: none;
color: #E15517 !important;
}
.pBio {
text-align: left;
display: none;
font-size: 12px;
}
.pWrapper {
margin-bottom: 3px;
}

163
itf/static/css/thickbox.css

@ -0,0 +1,163 @@
/* ----------------------------------------------------------------------------------------------------------------*/
/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
/* ----------------------------------------------------------------------------------------------------------------*/
*{padding: 0; margin: 0;}
/* ----------------------------------------------------------------------------------------------------------------*/
/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
/* ----------------------------------------------------------------------------------------------------------------*/
#TB_window {
font: 12px Arial, Helvetica, sans-serif;
color: #333333;
}
#TB_secondLine {
font: 10px Arial, Helvetica, sans-serif;
color:#666666;
}
#TB_window a:link {color: #666666;}
#TB_window a:visited {color: #666666;}
#TB_window a:hover {color: #000;}
#TB_window a:active {color: #666666;}
#TB_window a:focus{color: #666666;}
/* ----------------------------------------------------------------------------------------------------------------*/
/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
/* ----------------------------------------------------------------------------------------------------------------*/
#TB_overlay {
position: fixed;
z-index:100;
top: 0px;
left: 0px;
height:100%;
width:100%;
}
.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}
.TB_overlayBG {
background-color:#000;
filter:alpha(opacity=75);
-moz-opacity: 0.75;
opacity: 0.75;
}
* html #TB_overlay { /* ie6 hack */
position: absolute;
height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
}
#TB_window {
position: fixed;
background: #ffffff;
z-index: 102;
color:#000000;
display:none;
border: 4px solid #525252;
text-align:left;
top:50%;
left:50%;
}
* html #TB_window { /* ie6 hack */
position: absolute;
margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
}
#TB_window img#TB_Image {
display:block;
margin: 15px 0 0 15px;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
border-top: 1px solid #666;
border-left: 1px solid #666;
}
#TB_caption{
height:25px;
padding:7px 30px 10px 25px;
float:left;
}
#TB_closeWindow{
height:25px;
padding:11px 25px 10px 0;
float:right;
}
#TB_closeAjaxWindow{
padding:7px 10px 5px 0;
margin-bottom:1px;
text-align:right;
float:right;
}
#TB_ajaxWindowTitle{
float:left;
padding:7px 0 5px 10px;
margin-bottom:1px;
}
#TB_title{
background-color:#e8e8e8;
height:27px;
}
#TB_ajaxContent{
clear:both;
padding:2px 15px 15px 15px;
overflow:auto;
text-align:left;
line-height:1.4em;
}
#TB_ajaxContent.TB_modal{
padding:15px;
}
#TB_ajaxContent p{
padding:5px 0px 5px 0px;
}
#TB_load{
position: fixed;
display:none;
height:13px;
width:208px;
z-index:103;
top: 50%;
left: 50%;
margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
}
* html #TB_load { /* ie6 hack */
position: absolute;
margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
}
#TB_HideSelect{
z-index:99;
position:fixed;
top: 0;
left: 0;
background-color:#fff;
border:none;
filter:alpha(opacity=0);
-moz-opacity: 0;
opacity: 0;
height:100%;
width:100%;
}
* html #TB_HideSelect { /* ie6 hack */
position: absolute;
height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
}
#TB_iframeContent{
clear:both;
border:none;
margin-bottom:-1px;
margin-top:1px;
_margin-bottom:1px;
}

200
itf/static/css/wireframe.css

@ -0,0 +1,200 @@
#pageTitle
{
margin-left: 0px;
text-align: left;
}
#welcomeText
{
color: #fff;
font-size: 17px;
font-weight: bold;
}
.centerText{
font-size: 12px;
}
#rightText{
font-size: 11px;
padding: 7px;
}
#emailInput
{
color: #d4a03a;
background: #fffcc7;
border: 1px solid #852002;
font-weight: bold;
}
#leftNav {
list-style-type: none;
margin: 0px;
padding: 0px;
width: 150px;
margin-left: auto;
margin-right: auto;
}
#leftNav li {
margin-bottom: 10px;
width: 150px;
}
#leftNav li a {
text-decoration: none;
color: #852002;
display: block;
text-align: center;
background: #e15517;
width: 150px;
/* border: 1px solid #852002; */
}
#leftNav li a:link {
text-decoration: none;
color: #852002;
}
#leftNav li a:visited {
color: #852002;
}
#leftNav li a:hover {
background: #c52620;
color: yellow;
/* border: 1px solid #000; */
}
.currentNav a {
color: #652d00 !important;
background: #f8c301 !important;
font-weight: bold;
}
.currentNav a:link {
color: #fff !important;
background: #f8c301 !important;
}
.currentNav a:hover {
/* border: 1px solid #d13 !important; */
color: #831717 !important;
}
#centerContent {
padding: 25px;
background: #fffcc7;
}
#centerContent h1, h2, h3, h4, h5 {
color: #582e1e;
text-align: left;
font-weight: normal;
}
#centerContent a {
color: #c73e2b;
}
#centerContent a:visited {
color: #c73e2b;
}
#centerContent a:hover {
color: #5f3326;
}
#submitText {
font-size: 13px;
color: #fff;
font-weight: bold;
cursor: pointer;
}
input {
background: #999;
}
input:focus {
background: #fff;
}
h1 {
text-align: center;
}
.helper {
display: none;
font-size: -1;
background: #ccc;
border-bottom: 1px dashed #000;
}
.objWrapper {
margin-bottom: 20px;
}
.titleLink {
text-align: left;
font-size: 13px;
font-weight: bold;
padding-bottom: 3px;
color:#C73E2B;
}
.titleLink a {
font-weight: bold;
text-decoration: none;
}
.titleLink a:hover {
color: #f00;
}
#submitting {
display: none;
color: #ccc;
}
a img {
border: 0px solid #000;
}
.error {
color: #f00;
}
#emailSignup {
position: absolute;
right: 10px;
bottom: 5px;
font-size: 14px;
font-weight: bold;
color: #fff;
}
.more a {
text-decoration: none;
color: #ee9b11 !important;
font-weight: bold;
}
.more a:hover {
color: #5f3326 !important;
}
#right2 {
display: none;
}
.rightMore a {
text-decoration: none;
color: #fff;
font-weight: bold;
}
.rightMore a:hover {
color: #5f3326;
}

BIN
itf/static/images/150x150.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
itf/static/images/50x50.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
itf/static/images/Audio.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
itf/static/images/Lowbg_bak.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
itf/static/images/PDFIcon.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
itf/static/images/VideoIcon.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
itf/static/images/audio.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
itf/static/images/bg1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
itf/static/images/book.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
itf/static/images/border.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

BIN
itf/static/images/controls.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
itf/static/images/document.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
itf/static/images/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
itf/static/images/image.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
itf/static/images/internet_explorer/borderBottomCenter.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

BIN
itf/static/images/internet_explorer/borderBottomLeft.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
itf/static/images/internet_explorer/borderBottomRight.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

BIN
itf/static/images/internet_explorer/borderMiddleLeft.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

BIN
itf/static/images/internet_explorer/borderMiddleRight.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

BIN
itf/static/images/internet_explorer/borderTopCenter.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

BIN
itf/static/images/internet_explorer/borderTopLeft.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

BIN
itf/static/images/internet_explorer/borderTopRight.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

BIN
itf/static/images/large_audio.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
itf/static/images/loading.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
itf/static/images/loadingAnimation.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
itf/static/images/loading_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

BIN
itf/static/images/overlay.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

BIN
itf/static/images/player.swf

Binary file not shown.

BIN
itf/static/images/playvid.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
itf/static/images/playvid100.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
itf/static/images/profileimage.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
itf/static/images/theatre.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
itf/static/images/video-mini.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

73
itf/static/js/festival.js

@ -0,0 +1,73 @@
String.prototype.trim = function(){
return( this.replace(new RegExp("^([\\s]+)|([\\s]+)$", "gm"), "") );
}
$(document).ready(function() {
// if ($('#centerContent').length > 0 && $.support.opacity) $('#centerContent').jScrollPane();
$('#emailInput').initDefaults();
$('#submitText').click(function() {
var that = this;
$(this).fadeOut("fast");
$('#submitting').fadeIn("fast");
$('#emailInput').attr("disabled", "disabled");
var email = $('#emailInput').val();
$.get("/itf/save_email/", {
'email': email
}, function(res) {
if (res == '1') {
$('#emailSignup').hide();
$('#emailSignup').html("Thanks for signing up!");
$('#emailSignup').slideDown("slow");
} else {
$('#emailInput').removeAttr("disabled");
$('#welcomeText').hide();
$('#welcomeText').html("Please enter a valid email address: ");
$('#welcomeText').addClass("error");
$('#welcomeText').show();
$('#submitting').hide();
$('#submitText').fadeIn("fast");
}
});
});
$('#submitText').hover(function() {
$(this).css("color", "#f8c301");
}, function() {
$(this).css("color", "#fff");
});
});
function showNext() {
$('#right2').show("slow");
$('.rightMore').hide();
}
/*
$('#leftNav > li > a').mouseover(function() {
$(this).next().slideDown("fast");
});
$('#leftNav > li').mouseout(function() {
$(this).children('.helper').slideUp("fast");
});
});
*/
jQuery.fn.initDefaults = function() {
this.each(function() {
if ($(this).val().trim() == '') {
var val = $(this).attr("data-default");
$(this).val(val);
}
$(this).focus(function() {
if ($(this).val() === $(this).attr('data-default')) {
$(this).val('');
}
}).blur(function() {
var that = $(this);
if ($(this).val().trim() == '') {
$(this).val(that.attr("data-default"));
}
});
});
return this;
}

1238
itf/static/js/fullcalendar.js

File diff suppressed because it is too large

16
itf/static/js/fullcalendar.min.js

File diff suppressed because one or more lines are too long

1
itf/static/js/jScrollPane-1.2.3.min.js

File diff suppressed because one or more lines are too long

16
itf/static/js/jcarousel.js

File diff suppressed because one or more lines are too long

19
itf/static/js/jquery-1.3.2.min.js

File diff suppressed because one or more lines are too long

34
itf/static/js/jquery-ui-1.7.2.custom.min.js

File diff suppressed because one or more lines are too long

2
itf/static/js/jquery.colorbox-min.js

File diff suppressed because one or more lines are too long

60
itf/static/js/jquery.mousewheel.js

@ -0,0 +1,60 @@
/*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
*
* Version: 3.0.2
*
* Requires: 1.2.2+
*/
(function($) {
var types = ['DOMMouseScroll', 'mousewheel'];
$.event.special.mousewheel = {
setup: function() {
if ( this.addEventListener )
for ( var i=types.length; i; )
this.addEventListener( types[--i], handler, false );
else
this.onmousewheel = handler;
},
teardown: function() {
if ( this.removeEventListener )
for ( var i=types.length; i; )
this.removeEventListener( types[--i], handler, false );
else
this.onmousewheel = null;
}
};
$.fn.extend({
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},
unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
});
function handler(event) {
var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
event = $.event.fix(event || window.event);
event.type = "mousewheel";
if ( event.wheelDelta ) delta = event.wheelDelta/120;
if ( event.detail ) delta = -event.detail/3;
// Add events and delta to the front of the arguments
args.unshift(event, delta);
return $.event.handle.apply(this, args);
}
})(jQuery);

294
itf/static/js/jquery.tooltip.js

@ -0,0 +1,294 @@
/*
* jQuery Tooltip plugin 1.3
*
* http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
* http://docs.jquery.com/Plugins/Tooltip
*
* Copyright (c) 2006 - 2008 Jörn Zaefferer
*
* $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
;(function($) {
// the tooltip element
var helper = {},
// the current tooltipped element
current,
// the title of the current element, used for restoring
title,
// timeout id for delayed tooltips
tID,
// IE 5.5 or 6
IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent),
// flag for mouse tracking
track = false;
$.tooltip = {
blocked: false,
defaults: {
delay: 200,
fade: false,
showURL: true,
extraClass: "",
top: 15,
left: 15,
id: "tooltip"
},
block: function() {
$.tooltip.blocked = !$.tooltip.blocked;
}
};
$.fn.extend({
tooltip: function(settings) {
settings = $.extend({}, $.tooltip.defaults, settings);
createHelper(settings);
return this.each(function() {
$.data(this, "tooltip", settings);
this.tOpacity = helper.parent.css("opacity");
// copy tooltip into its own expando and remove the title
this.tooltipText = this.title;
$(this).removeAttr("title");
// also remove alt attribute to prevent default tooltip in IE
this.alt = "";
})
.mouseover(save)
.mouseout(hide)
.click(hide);
},
fixPNG: IE ? function() {
return this.each(function () {
var image = $(this).css('backgroundImage');
if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
image = RegExp.$1;
$(this).css({
'backgroundImage': 'none',
'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
}).each(function () {
var position = $(this).css('position');
if (position != 'absolute' && position != 'relative')
$(this).css('position', 'relative');
});
}
});
} : function() { return this; },
unfixPNG: IE ? function() {
return this.each(function () {
$(this).css({'filter': '', backgroundImage: ''});
});
} : function() { return this; },
hideWhenEmpty: function() {
return this.each(function() {
$(this)[ $(this).html() ? "show" : "hide" ]();
});
},
url: function() {
return this.attr('href') || this.attr('src');
}
});
function createHelper(settings) {
// there can be only one tooltip helper
if( helper.parent )
return;
// create the helper, h3 for title, div for url
helper.parent = $('<div id="' + settings.id + '"><h3></h3><div class="body"></div><div class="url"></div></div>')
// add to document
.appendTo(document.body)
// hide it at first
.hide();
// apply bgiframe if available
if ( $.fn.bgiframe )
helper.parent.bgiframe();
// save references to title and url elements
helper.title = $('h3', helper.parent);
helper.body = $('div.body', helper.parent);
helper.url = $('div.url', helper.parent);
}
function settings(element) {
return $.data(element, "tooltip");
}
// main event handler to start showing tooltips
function handle(event) {
// show helper, either with timeout or on instant
if( settings(this).delay )
tID = setTimeout(show, settings(this).delay);
else
show();
// if selected, update the helper position when the mouse moves
track = !!settings(this).track;
$(document.body).bind('mousemove', update);
// update at least once
update(event);
}
// save elements title before the tooltip is displayed
function save() {
// if this is the current source, or it has no title (occurs with click event), stop
if ( $.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler) )
return;
// save current
current = this;
title = this.tooltipText;
if ( settings(this).bodyHandler ) {
helper.title.hide();
var bodyContent = settings(this).bodyHandler.call(this);
if (bodyContent.nodeType || bodyContent.jquery) {
helper.body.empty().append(bodyContent)
} else {
helper.body.html( bodyContent );
}
helper.body.show();
} else if ( settings(this).showBody ) {
var parts = title.split(settings(this).showBody);
helper.title.html(parts.shift()).show();
helper.body.empty();
for(var i = 0, part; (part = parts[i]); i++) {
if(i > 0)
helper.body.append("<br/>");
helper.body.append(part);
}
helper.body.hideWhenEmpty();
} else {
helper.title.html(title).show();
helper.body.hide();
}
// if element has href or src, add and show it, otherwise hide it
if( settings(this).showURL && $(this).url() )
helper.url.html( $(this).url().replace('http://', '') ).show();
else
helper.url.hide();
// add an optional class for this tip
helper.parent.addClass(settings(this).extraClass);
// fix PNG background for IE
if (settings(this).fixPNG )
helper.parent.fixPNG();
handle.apply(this, arguments);
}
// delete timeout and show helper
function show() {
tID = null;
if ((!IE || !$.fn.bgiframe) && settings(current).fade) {
if (helper.parent.is(":animated"))
helper.parent.stop().show().fadeTo(settings(current).fade, current.tOpacity);
else
helper.parent.is(':visible') ? helper.parent.fadeTo(settings(current).fade, current.tOpacity) : helper.parent.fadeIn(settings(current).fade);
} else {
helper.parent.show();
}
update();
}
/**
* callback for mousemove
* updates the helper position
* removes itself when no current element
*/
function update(event) {
if($.tooltip.blocked)
return;
if (event && event.target.tagName == "OPTION") {
return;
}
// stop updating when tracking is disabled and the tooltip is visible
if ( !track && helper.parent.is(":visible")) {
$(document.body).unbind('mousemove', update)
}
// if no current element is available, remove this listener
if( current == null ) {
$(document.body).unbind('mousemove', update);
return;
}
// remove position helper classes
helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");
var left = helper.parent[0].offsetLeft;
var top = helper.parent[0].offsetTop;
if (event) {
// position the helper 15 pixel to bottom right, starting from mouse position
left = event.pageX + settings(current).left;
top = event.pageY + settings(current).top;
var right='auto';
if (settings(current).positionLeft) {
right = $(window).width() - left;
left = 'auto';
}
helper.parent.css({
left: left,
right: right,
top: top
});
}
var v = viewport(),
h = helper.parent[0];
// check horizontal position
if (v.x + v.cx < h.offsetLeft + h.offsetWidth) {
left -= h.offsetWidth + 20 + settings(current).left;
helper.parent.css({left: left + 'px'}).addClass("viewport-right");
}
// check vertical position
if (v.y + v.cy < h.offsetTop + h.offsetHeight) {
top -= h.offsetHeight + 20 + settings(current).top;
helper.parent.css({top: top + 'px'}).addClass("viewport-bottom");
}
}
function viewport() {
return {
x: $(window).scrollLeft(),
y: $(window).scrollTop(),
cx: $(window).width(),
cy: $(window).height()
};
}
// hide helper and restore added classes and the title
function hide(event) {
if($.tooltip.blocked)
return;
// clear timeout if possible
if(tID)
clearTimeout(tID);
// no more current element
current = null;
var tsettings = settings(this);
function complete() {
helper.parent.removeClass( tsettings.extraClass ).hide().css("opacity", "");
}
if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
if (helper.parent.is(':animated'))
helper.parent.stop().fadeTo(tsettings.fade, 0, complete);
else
helper.parent.stop().fadeOut(tsettings.fade, complete);
} else
complete();
if( settings(this).fixPNG )
helper.parent.unfixPNG();
}
})(jQuery);

26
itf/static/js/jquery.transliterate.js

@ -0,0 +1,26 @@
/*
Use like $(elem).GTransliterate(lang);
where lang = a language code like "hi", "ka", etc.
Make sure to include <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> at top of page
Also, you must include this at the top of your page:
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
*/
google.load("elements", "1", {
packages: 'transliteration'
});
jQuery.fn.GTransliterate = function(lang) {
var options = {
sourceLanguage: 'en',
destinationLanguage: [lang],
transliterationEnabled: true
}
var thisId = this.attr('id');
var GControl = new google.elements.transliteration.TransliterationControl(options);
GControl.makeTransliteratable([thisId]);
return this;
}

256
itf/static/js/mockup.js

@ -0,0 +1,256 @@
var calJson = [{
'id': 1,
'title': 'Midsummers Night Dream',
'date': new Date()
},
{
'id': 2,
'title': 'Childrens Acting Workshop',
'date': getFutureDate(3)
},
{
'id': 3,
'title': 'एक हिंदी नाटक',
'date': getPastDate(5)
},
{
'id': 4,
'title': 'Workshop Series by Jehan Maneckshaw',
'start': getPastDate(8),
'end': getPastDate(4),
},
{
'id': 5,
'title': 'Lorem Ipsum Dolor Amet',
'date': getFutureDate(5)
}
]
function getFutureDate(no) {
var now = new Date();
now.setDate(now.getDate() + no);
// console.log(now.getDate());
return now;
}
function getPastDate(no) {
var now = new Date();
now.setDate(now.getDate() - no);
return now;
}
$(document).ready(function() {
// $('#mycarousel').jcarousel();
// initMap();
//Behaviour of top drop-down dialog
//TODO: remove global var currentlyDisplayedDialog
currentlyDisplayedDialog = '';
$('.dialogLink').live("click", function() {
if (currentlyDisplayedDialog != '') {
$('#' + currentlyDisplayedDialog).slideUp();
}
var target = $(this).attr("data-target");
var targetSelector = '#' + target;
var t = $(targetSelector);
if (target == currentlyDisplayedDialog) {
t.slideUp();
currentlyDisplayedDialog = '';
return true;
}
//Adds header elem from title attr and adds close button.
if (t.children(".dialogTitle").length === 0) {
var titleElem = $('<div />');
titleElem.addClass('dialogTitle');
titleElem.text(t.attr("title"));
var closeBtn = $('<div />');
closeBtn.addClass('closeBtn');
closeBtn.attr("data-target", target);
closeBtn.text("X");
closeBtn.click(function() {
var tempTarg = $(this).attr("data-target");
$('#' + tempTarg).slideUp();
currentlyDisplayedDialog = '';
});
titleElem.append(closeBtn);
t.prepend(titleElem);
}
t.slideDown();
currentlyDisplayedDialog = target;
return true;
});
//top button hover states.
//TODO use addClass / removeClass
addTopHovers();
$('.toplink').hover(function() {
$(this).css({'font-weight': 'bold', 'color': '#fff'});
}, function() {
$(this).css({'font-weight': 'normal', 'color': '#eee'});
});
//center buttons hover states
$('.centerBtn').hover(function() {
$(this).addClass('centerBtnHover');
}, function() {
$(this).removeClass('centerBtnHover');
});
//Handles center tabs: displays the div specified in data-target and if data-source is set, loads data from url specified.
//TODO: remove use of global currentlyDisplayedTab
currentlyDisplayedTab = '';
$('.tabBtn').live("click", function() {
var that = $(this);
var target = $(this).attr('data-target');
var tElem = $('#' + target);
if (currentlyDisplayedTab == target) {
return true;
} else if (currentlyDisplayedTab == '') {
tElem.show();
currentlyDisplayedTab = target;
} else {
var cElem = $('#' + currentlyDisplayedTab);
cElem.hide();
tElem.show();
$('.tabBtn').filter("div[data-target=" + currentlyDisplayedTab + "]").removeClass("centerBtnSelected");
currentlyDisplayedTab = target;
if (that.attr('data-source')) {
if (!tElem.attr("data-loaded")) {
var dataSource = that.attr('data-source');
tElem.load(dataSource);
tElem.attr("data-loaded", "true");
}
}
}
that.addClass('centerBtnSelected');
return true;
});
//toggle function for left menu collapsibles
$('.leftTab').toggle(function() {
$(this).next().slideDown();
// $(this).css('text-decoration', 'underline');
}, function() {
$(this).next().slideUp();
// $(this).css('text-decoration', 'none');
});
/*
isAnimating = [];
$('.basicLink').each(function() {
var innerText = $(this).children('.basicLinkInner').text();
$(this).attr('data-id', innerText);
isAnimating[innerText] = false;
});
$('.basicLink').hover(function() {
var id = $(this).attr('data-id');
isAnimating[id] = true;
$(this).children('.basicLinkInner').animate({'right': '150px'}, 500, function() {
isAnimating[id] = false;
});
}, function() {
$(this).children('.basicLinkInner').stop();
$(this).children('.basicLinkInner').css("right", "0px");
});
*/
/*
$('#basicLinks').mouseout(function() {
$('.basicLinkInner').stop();
$('.basicLinkInner').each(function() {
var currRight = $(this).css("right");
if (currRight != '0px') {
$(this).animate({'right': '0px'}, 250);
}
});
});
*/
/*.mouseout(function() {
$(this).stop();
$(this).children('.basicLinkInner').animate({'right': '0px'}, 250);
});*/
//silly function to add a 'See All' to the end of the left tab contents, might be evil.
$('.leftTabContent').each(function() {
var e = $('<div />');
e.addClass('seeAll');
e.text('See All');
$(this).append(e);
});
//also a bit silly, simulates a click on the calendar button to make it the default displayed.
$('#calendarBtn').click();
$('#tabCalendar').fullCalendar({
'events': calJson
});
$('#newsBtn').click();
//onclick handler to close admin message box
$('#adminMessageBoxClose').click(function() {
$('#adminMessageBox').slideUp();
});
$('#loginSubmit').click(function() {
$('#loginDialog').slideUp();
$('#adminMessage').slideUp(500, function() {
$(this).html("You are now logged in.");
$(this).show()
$('#adminMessageBox').slideDown();
var html = getLoggedInHtml();
$('#loginRegister').html(html);
addTopHovers();
addLoggedInClickHandlers();
$('#profileButton').click();
});
});
});
function addLoggedInClickHandlers() {
}
function getLoggedInHtml() {
var html = '';
html += '<div id="loggedInButtons">';
html += '<div class="topBtn loggedIn tabBtn" data-target="tabProfile" data-source="/x0profile" id="profileButton" data-target="">Profile &nbsp;</div>';
html += '<div class="topBtn loggedIn" id="messagesButton" data-target=""> &nbsp;Messages &nbsp;</div>';
html += '<div class="topBtn loggedIn" id="connectionsButton" data-target=""> &nbsp;Connections</div>';
html += '</div>';
return html;
}
function addTopHovers() {
$('.topBtn').hover(function() {
$(this).css("color", "#FCB281");
}, function() {
$(this).css("color", "#fff");
});
}
function initCarousel() {
$('#mycarousel').jcarousel({start: 3});
}
function initMap() {
var latlng = new google.maps.LatLng(19.13307, 72.91374);
var myOptions = {
zoom: 11,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
var lonlat = [];
lonlat[0] = new google.maps.LatLng(19.063152313232, 72.829391479492);
lonlat[1] = new google.maps.LatLng(19.106038, 72.828798);
for (l in lonlat) {
if (lonlat.hasOwnProperty(l)) {
var m = new google.maps.Marker(lonlat[l]);
map.addOverlay(m);
/* google.maps.Event.addListener(m, 'click', function() {
m.openInfoWindowHtml("Details of the event would go here ... ");
}); */
}
}
}

54
itf/static/js/mytrans.js

@ -0,0 +1,54 @@
google.load("elements", "1", {
packages: 'transliteration'
});
//google.load("language", "1"):
$(document).ready(function() {
var transElem = $('#id_translations-TOTAL_FORMS').parent();
transElem.remove();
var firstFormElem = $('.form-row:first');
firstFormElem.append(transElem);
//Add on blur to english field
$('#id_translations-0-firstname').blur(function() {
var strArr = $(this).val().split(" ");
google.language.transliterate(strArr, "en", "hi", function(result) {
if (!result.error) {
console.log(result);
}
});
});
$.getJSON("/getLanguages", {}, function(data) {
var myLanguages = data;
var destLangs = [];
var allTransIds = [];
for (var l in myLanguages) {
if (l >= 1) {
var lShort = myLanguages[l]['short']
destLangs.push(lShort);
var thisForm = transElem.find('.inline-related').eq(l);
thisForm.find('textarea, input').each(function() {
if ($(this).attr("type") != "hidden") {
var thisId = $(this).attr('id');
allTransIds.push(thisId);
$(this).attr("data-lang", lShort);
$(this).focus(function() {
var lang = $(this).attr("data-lang");
GControl.setLanguagePair("en", lang);
});
}
});
}
}
var options = {
sourceLanguage: 'en',
destinationLanguage: destLangs,
transliterationEnabled: true
}
GControl = new google.elements.transliteration.TransliterationControl(options);
GControl.makeTransliteratable(allTransIds);
});
});

12
itf/static/js/people.js

@ -0,0 +1,12 @@
$(document).ready(function() {
$('.pName').toggle(function() {
$(this).next().slideDown();
}, function() {
$(this).next().slideUp();
});
$('.pName').hover(function() {
$(this).css("color", "#582E1E");
}, function() {
$(this).css("color", "#C73E2B");
});
});

36
itf/static/js/pretty.js

@ -0,0 +1,36 @@
/*
* JavaScript Pretty Date
* Copyright (c) 2008 John Resig (jquery.com)
* Licensed under the MIT license.
*/
// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
return;
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
}
// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
jQuery.fn.prettyDate = function(){
return this.each(function(){
var date = prettyDate(this.title);
if ( date )
jQuery(this).text( date );
});
};

8
itf/static/js/swfobject.js

File diff suppressed because one or more lines are too long

10
itf/static/js/thickbox.js

File diff suppressed because one or more lines are too long

16
itf/templates/404.html

@ -0,0 +1,16 @@
{% extends 'festival_wireframe.html' %}
{% block title %} Page Not Found {% endblock %}
{% block extra_head %}
<link rel="stylesheet" type="text/css" href="/static/css/error_pages.css" />
{% endblock %}
{% block centerCol %}
<div class="errorTxt">
This is a website acting like it found the page you were looking for, but really didn't.
<br /><br />
Please check the url you typed in, and if it seems like an error on our part, please email admin@theatreforum.in.
<br /><br />
Thanks, and err.. apologies.
</div>
{% endblock %}

14
itf/templates/500.html

@ -0,0 +1,14 @@
{% extends 'festival_wireframe.html' %}
{% block title %} Oops.. we made an error.. {% endblock %}
{% block extra_head %}
<link rel="stylesheet" type="text/css" href="/static/css/error_pages.css" />
{% endblock %}
{% block centerCol %}
<div class="errorTxt">
Oops.. the website made a booboo.<br /><br />
Please contact admin@theatreforum.in if this error persists.<br /><br />
Thanks, and err.. apologies.
</div>
{% endblock %}

10
itf/templates/admin/base_site.html

@ -0,0 +1,10 @@
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'ITF site admin' %}{% endblock %}
{% block branding %}
<h1 id="site-name">{% trans 'India Theatre Forum Admin' %}</h1>
{% endblock %}
{% block nav-global %}{% endblock %}

32
itf/templates/erang.html

@ -0,0 +1,32 @@
{% extends 'festival_wireframe.html' %}
{% block title %}
ITF - eRang
{% endblock %}
{% block leftCol %}
<ul id="leftNav">
<li><a href="/itf/">Home</a></li>
<li><a href="/itf/meetings">Activities</a><div class="helper">ITF Meetings - transcripts, audio, discussions.</div></li>
<li><a href="/itf/projects">Projects</a><div class="helper">Projects undertaken by the ITF...</div></li>
<li class="currentNav"><a href="/itf/erang">e-Rang</a><div class="helper">The theatre newsletter...</div></li>
<li><a href="/itf/resources">Resources</a><div class="helper">Downloadable reading materials and resources</div></li>
<li><a href="/itf/surveys">Surveys</a><div class="helper">Surveys about theatre in India...</div></li>
<li><a href="/itf/publications">Publications</a><div class="helper">Publications by the ITF..</div></li>
<li><a href="/itf/people">Participants</a><div class="helper">A list of participants for all ITF meetings</div></li>
</ul>
{% endblock %}
</div>
<div id="centerCol">
{% block centerCol %}
<div id="centerContent">
<h3>e-Rang</h3>
<br><div class="titleLink">e-Rang: Fortnightly Theatre Journal</div>
<div class="centerText">
<p>There are a large number of people who are deeply interested in Indian theatre, but who are starved of regular news and discussion about it. Bringing out a hard copy journal is a costly affair, and is not easy to sustain. Therefore, as part of the Forum website, it was felt that it would be useful to bring out an internet-based fortnightly journal. The coordinator of this project, Sudhanva Deshpande, has some experience of bringing out a journal of this kind, since he co-edited e-STQ. It was decided that he would put together a team that would bring out the new e-journal, tentatively christened e-Rang.</p>
<p>e-Rang will be sent out free to readers.</p>
</div>
</div>
{% endblock %}

71
itf/templates/festival_base.html

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/static/css/festival.css" />
<link rel="stylesheet" href="/static/css/wireframe.css" />
<link rel="stylesheet" type="text/css" media="all" href="/static/css/jScrollPane.css" />
<script src="/static/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/static/js/jquery.mousewheel.js"></script>
<script type="text/javascript" src="/static/js/jScrollPane-1.2.3.min.js"></script>
<script type="text/javascript" src="/static/js/festival.js"></script>
{% block extra_head %}
{% endblock %}
</head>
<body>
<div id="wrapper">
<div id="header">
{% block headerRow %}
<div id="pageTitle">
<h1> India Theatre Forum </hi>
</div>
<div id="emailSignup">
Website coming soon. Sign-up for updates:
<input type="text" id="emailInput" data-default="E-mail" />
<span id="submitText">Submit</span>
</div>
{% endblock %}
</div>
<div id="body_wrapper">
<div id="leftCol">
{% block leftCol %}
<ul id="leftNav">
<li class="currentNav"><a href="/itf/">Home</li>
<li><a href="/itf/meetings">Meetings</a><div class="helper">ITF Meetings - transcripts, audio, discussions.</div></li>
<li><a href="/itf/projects">Projects</a><div class="helper">Projects undertaken by the ITF...</li>
<li><a href="/itf/erang">eRang</a><div class="helper">The theatre newsletter...</div></li>
<li><a href="/itf/people">Participants</a><div class="helper">A list of participants for all ITF meetings</div></li>
<li><a href="/itf/resources">Resources</a><div class="helper">Downloadable reading materials and resources</div></li>
</ul>
{% endblock %}
</div>
<div id="centerCol">
{% block centerCol %}
<div id="centerContent">
<h1> Meetings </h1>
<div class="centerText">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas laoreet, velit non ultricies blandit, augue lacus mattis lacus, vel malesuada massa mi nec nisl. Nulla condimentum venenatis malesuada. Donec purus tellus, feugiat nec porttitor id, feugiat sed tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam at dapibus justo. Praesent volutpat mauris non orci molestie sit amet ultrices nisi sodales. In vitae consectetur ante. Nulla vel odio nibh, eu cursus velit. Fusce vel augue eget sapien lobortis pretium ut aliquam mauris. Nunc non varius quam. Nulla vel justo ut dui laoreet vehicula sed sed sem.
<br /><br />
Pellentesque ut rhoncus tortor. Vivamus facilisis hendrerit turpis, sit amet cursus diam accumsan nec. Nunc in nisi enim, quis ultricies libero. Aliquam ut augue diam. Vivamus vel dui augue. Praesent dictum tristique urna sed pharetra. In hac habitasse platea dictumst. Phasellus sit amet ornare elit. Praesent nunc magna, interdum tristique aliquet nec, malesuada eu libero. Vivamus blandit felis ac ipsum placerat sed porttitor orci placerat. Nullam magna arcu, feugiat in gravida nec, porta nec erat. Proin aliquam turpis vel lacus posuere vehicula. Nullam eros elit, vulputate sed iaculis in, scelerisque id nunc. Suspendisse potenti. Cras vitae purus quis ante ornare venenatis nec sit amet metus. Cras vehicula tortor vitae arcu dignissim hendrerit. Phasellus vel est justo, id tristique dolor. Vestibulum congue tempus mauris interdum pretium. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam orci orci, ultricies in luctus eu, faucibus eget nibh.
<br /><br />
Donec a pharetra purus. Duis vel elit ipsum. Proin rhoncus viverra sollicitudin. Curabitur consectetur viverra vestibulum. Nulla vel ante vel lectus interdum laoreet et ac tortor. In interdum, arcu ut venenatis ultrices, nibh massa posuere urna, id dapibus nisl dui non mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam porta, nulla eu sollicitudin placerat, dui arcu fermentum libero, vel dignissim ante augue sit amet est. Aenean a enim urna. Aenean semper eros at mi tristique lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse et arcu id mi imperdiet porta. Sed vel sapien odio, vel imperdiet felis. Maecenas porttitor lacus ac nisi luctus sit amet ullamcorper magna dapibus. Etiam eu lorem in magna elementum sollicitudin.
<br /><br />
Nam placerat leo vitae dui lobortis vulputate. Aliquam congue faucibus erat in luctus. Aenean volutpat aliquam tellus, et cursus massa rhoncus ut. In tincidunt porttitor velit at elementum. Ut felis nunc, porttitor quis varius ut, ullamcorper eget odio. Vivamus magna erat, dictum id volutpat eget, luctus in elit. Cras tempor elementum bibendum. Phasellus imperdiet neque ac lacus rhoncus eget tincidunt dolor imperdiet. Suspendisse potenti. Phasellus porttitor condimentum leo, sit amet tempor dui tristique at. Phasellus tincidunt orci a nisi laoreet mollis. Aenean vel sagittis erat.
<br /><br />
Suspendisse vehicula iaculis est tristique semper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean id enim dapibus lorem posuere sollicitudin. Sed vitae pulvinar nisi. Duis non augue odio. In hac habitasse platea dictumst. Praesent egestas erat eu est mollis in porta mauris auctor. Nunc ultrices scelerisque tempus. Quisque mattis orci eu mauris porttitor et porttitor nulla pulvinar. Curabitur tincidunt leo sit amet eros dapibus id eleifend dui varius. Nulla facilisi. Vivamus nec dolor convallis libero dictum posuere. Integer vestibulum, nulla sed iaculis molestie, leo justo pretium neque, adipiscing sollicitudin turpis turpis ut quam. Integer ac velit orci, ut sollicitudin magna. Vestibulum fermentum sodales ante, quis vulputate mi pellentesque quis.
</div>
</div>
{% endblock %}
</div>
<div id="rightCol">
{% block rightCol %}
<h1>About Us</h1>
<div id="rightText">
Suspendisse vehicula iaculis est tristique semper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean id enim dapibus lorem posuere sollicitudin. Sed vitae pulvinar nisi. Duis non augue odio. In hac habitasse platea dictumst. Praesent egestas erat eu est mollis in porta mauris auctor. Nunc ultrices scelerisque tempus. Quisque mattis orci eu mauris porttitor et porttitor nulla pulvinar. Curabitur tincidunt leo sit amet eros dapibus id eleifend dui varius. Nulla facilisi. Vivamus nec dolor convallis libero dictum posuere. Integer vestibulum, nulla sed iaculis molestie, leo justo pretium neque, adipiscing sollicitudin turpis turpis ut quam. Integer ac velit orci, ut sollicitudin magna. Vestibulum fermentum sodales ante, quis vulputate mi pellentesque quis.
</div>
{% endblock %}
</div>
</div>
</div>
</body>
</html>

86
itf/templates/festival_index.html

@ -0,0 +1,86 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/static/css/festival.css" />
<link rel="stylesheet" href="/static/css/wireframe.css" />
<link rel="stylesheet" type="text/css" media="all" href="/static/css/jScrollPane.css" />
<script src="/static/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/static/js/jquery.mousewheel.js"></script>
<script type="text/javascript" src="/static/js/jScrollPane-1.2.3.min.js"></script>
<script type="text/javascript" src="/static/js/festival.js"></script>
{% block extra_head %}
{% endblock %}
</head>
<body>
<div id="wrapper">
<div id="header">
{% block headerRow %}
<div id="pageTitle">
<h1> India Theatre Forum </hi>
</div>
<div id="emailSignup">
Website coming soon. Sign-up for updates:
<input type="text" id="emailInput" data-default="E-mail" />
<span id="submitText">Submit</span>
</div>
{% endblock %}
</div>
<div id="body_wrapper">
<div id="leftCol">
{% block leftCol %}
<ul id="leftNav">
<li class="currentNav"><a href="#">Home</li>
<li><a href="/itf/meetings">Meetings</a><div class="helper">ITF Meetings - transcripts, audio, discussions.</div></li>
<li><a href="/itf/projects">Projects</a><div class="helper">Projects undertaken by the ITF...</li>
<li><a href="/itf/erang">eRang</a><div class="helper">The theatre newsletter...</div></li>
<li><a href="/itf/people">Participants</a><div class="helper">A list of participants for all ITF meetings</div></li>
<li><a href="/itf/resources">Resources</a><div class="helper">Downloadable reading materials and resources</div></li>
</ul>
{% endblock %}
</div>
<div id="centerCol">
{% block centerCol %}
<div id="centerContent">
<h1> Meetings </h1>
<div class="centerText">
<div id="meeting_list" class="box">
<h1>Latest Meetings</h1>
<ul>
{% for o in data.latest_meetings %}
<li><a href="/meetingdetails/{{o.meeting.id}}">{{ o.meeting.title }}</a></li>
{% endfor %}
</ul>
</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas laoreet, velit non ultricies blandit, augue lacus mattis lacus, vel malesuada massa mi nec nisl. Nulla condimentum venenatis malesuada. Donec purus tellus, feugiat nec porttitor id, feugiat sed tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam at dapibus justo. Praesent volutpat mauris non orci molestie sit amet ultrices nisi sodales. In vitae consectetur ante. Nulla vel odio nibh, eu cursus velit. Fusce vel augue eget sapien lobortis pretium ut aliquam mauris. Nunc non varius quam. Nulla vel justo ut dui laoreet vehicula sed sed sem.
<br /><br />
Pellentesque ut rhoncus tortor. Vivamus facilisis hendrerit turpis, sit amet cursus diam accumsan nec. Nunc in nisi enim, quis ultricies libero. Aliquam ut augue diam. Vivamus vel dui augue. Praesent dictum tristique urna sed pharetra. In hac habitasse platea dictumst. Phasellus sit amet ornare elit. Praesent nunc magna, interdum tristique aliquet nec, malesuada eu libero. Vivamus blandit felis ac ipsum placerat sed porttitor orci placerat. Nullam magna arcu, feugiat in gravida nec, porta nec erat. Proin aliquam turpis vel lacus posuere vehicula. Nullam eros elit, vulputate sed iaculis in, scelerisque id nunc. Suspendisse potenti. Cras vitae purus quis ante ornare venenatis nec sit amet metus. Cras vehicula tortor vitae arcu dignissim hendrerit. Phasellus vel est justo, id tristique dolor. Vestibulum congue tempus mauris interdum pretium. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam orci orci, ultricies in luctus eu, faucibus eget nibh.
<br /><br />
Donec a pharetra purus. Duis vel elit ipsum. Proin rhoncus viverra sollicitudin. Curabitur consectetur viverra vestibulum. Nulla vel ante vel lectus interdum laoreet et ac tortor. In interdum, arcu ut venenatis ultrices, nibh massa posuere urna, id dapibus nisl dui non mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam porta, nulla eu sollicitudin placerat, dui arcu fermentum libero, vel dignissim ante augue sit amet est. Aenean a enim urna. Aenean semper eros at mi tristique lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse et arcu id mi imperdiet porta. Sed vel sapien odio, vel imperdiet felis. Maecenas porttitor lacus ac nisi luctus sit amet ullamcorper magna dapibus. Etiam eu lorem in magna elementum sollicitudin.
<br /><br />
Nam placerat leo vitae dui lobortis vulputate. Aliquam congue faucibus erat in luctus. Aenean volutpat aliquam tellus, et cursus massa rhoncus ut. In tincidunt porttitor velit at elementum. Ut felis nunc, porttitor quis varius ut, ullamcorper eget odio. Vivamus magna erat, dictum id volutpat eget, luctus in elit. Cras tempor elementum bibendum. Phasellus imperdiet neque ac lacus rhoncus eget tincidunt dolor imperdiet. Suspendisse potenti. Phasellus porttitor condimentum leo, sit amet tempor dui tristique at. Phasellus tincidunt orci a nisi laoreet mollis. Aenean vel sagittis erat.
<br /><br />
Suspendisse vehicula iaculis est tristique semper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean id enim dapibus lorem posuere sollicitudin. Sed vitae pulvinar nisi. Duis non augue odio. In hac habitasse platea dictumst. Praesent egestas erat eu est mollis in porta mauris auctor. Nunc ultrices scelerisque tempus. Quisque mattis orci eu mauris porttitor et porttitor nulla pulvinar. Curabitur tincidunt leo sit amet eros dapibus id eleifend dui varius. Nulla facilisi. Vivamus nec dolor convallis libero dictum posuere. Integer vestibulum, nulla sed iaculis molestie, leo justo pretium neque, adipiscing sollicitudin turpis turpis ut quam. Integer ac velit orci, ut sollicitudin magna. Vestibulum fermentum sodales ante, quis vulputate mi pellentesque quis.
</div>
</div>
{% endblock %}
</div>
<div id="rightCol">
{% block rightCol %}
<h1>About Us</h1>
<div id="rightText">
Suspendisse vehicula iaculis est tristique semper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean id enim dapibus lorem posuere sollicitudin. Sed vitae pulvinar nisi. Duis non augue odio. In hac habitasse platea dictumst. Praesent egestas erat eu est mollis in porta mauris auctor. Nunc ultrices scelerisque tempus. Quisque mattis orci eu mauris porttitor et porttitor nulla pulvinar. Curabitur tincidunt leo sit amet eros dapibus id eleifend dui varius. Nulla facilisi. Vivamus nec dolor convallis libero dictum posuere. Integer vestibulum, nulla sed iaculis molestie, leo justo pretium neque, adipiscing sollicitudin turpis turpis ut quam. Integer ac velit orci, ut sollicitudin magna. Vestibulum fermentum sodales ante, quis vulputate mi pellentesque quis.
</div>
{% endblock %}
</div>
</div>
</div>
</body>
</html>

100
itf/templates/festival_wireframe.html

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html>
<head>
<title>{% block title %} India Theatre Forum {% endblock %}</title>
<link rel="stylesheet" href="/static/css/festival.css" />
<link rel="stylesheet" href="/static/css/wireframe.css" />
<link rel="stylesheet" type="text/css" media="all" href="/static/css/jScrollPane.css" />
<script src="/static/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/static/js/festival.js"></script>
<!-- <script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> -->
{% block extra_head %}
{% endblock %}
</head>
<body>
<div id="wrapper">
<div id="header">
{% block headerRow %}
<div id="pageTitle">
<!-- <h1><span style="color: #da251c">India</span> <span style="color: #ee9b11">Theatre</span> <span style="color: #f8c301">Forum</span> </h1> -->
</div>
<div id="emailSignup">
<div id="welcomeText">Sign-up for updates:</div>
<input type="text" id="emailInput" data-default="E-mail" /><span id="submitText">Submit</span><span id="submitting">Submitting...</span>
</div>
{% endblock %}
</div>
<div id="body_wrapper">
<div id="leftCol">
{% block leftCol %}
<ul id="leftNav">
<li><a href="/itf/">Home</a></li>
<li><a href="/itf/meetings">Activities</a><div class="helper">ITF Meetings - transcripts, audio, discussions.</div></li>
<li><a href="/itf/projects">Projects</a><div class="helper">Projects undertaken by the ITF...</div></li>
<li><a href="/itf/erang">e-Rang</a><div class="helper">The theatre newsletter...</div></li>
<li><a href="/itf/resources">Resources</a><div class="helper">Downloadable reading materials and resources</div></li>
<li><a href="/itf/surveys">Surveys</a><div class="helper">Surveys about theatre in India...</div></li>
<li><a href="/itf/publications">Publications</a><div class="helper">Publications by the ITF..</div></li>
<li><a href="/itf/people">Participants</a><div class="helper">A list of participants for all ITF meetings</div></li>
</ul>
{% endblock %}
</div>
<div id="centerCol">
{% block centerCol %}
<div id="centerContent">
<h1> Meetings </h1>
<div class="centerText">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas laoreet, velit non ultricies blandit, augue lacus mattis lacus, vel malesuada massa mi nec nisl. Nulla condimentum venenatis malesuada. Donec purus tellus, feugiat nec porttitor id, feugiat sed tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam at dapibus justo. Praesent volutpat mauris non orci molestie sit amet ultrices nisi sodales. In vitae consectetur ante. Nulla vel odio nibh, eu cursus velit. Fusce vel augue eget sapien lobortis pretium ut aliquam mauris. Nunc non varius quam. Nulla vel justo ut dui laoreet vehicula sed sed sem.
<br /><br />
Pellentesque ut rhoncus tortor. Vivamus facilisis hendrerit turpis, sit amet cursus diam accumsan nec. Nunc in nisi enim, quis ultricies libero. Aliquam ut augue diam. Vivamus vel dui augue. Praesent dictum tristique urna sed pharetra. In hac habitasse platea dictumst. Phasellus sit amet ornare elit. Praesent nunc magna, interdum tristique aliquet nec, malesuada eu libero. Vivamus blandit felis ac ipsum placerat sed porttitor orci placerat. Nullam magna arcu, feugiat in gravida nec, porta nec erat. Proin aliquam turpis vel lacus posuere vehicula. Nullam eros elit, vulputate sed iaculis in, scelerisque id nunc. Suspendisse potenti. Cras vitae purus quis ante ornare venenatis nec sit amet metus. Cras vehicula tortor vitae arcu dignissim hendrerit. Phasellus vel est justo, id tristique dolor. Vestibulum congue tempus mauris interdum pretium. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam orci orci, ultricies in luctus eu, faucibus eget nibh.
<br /><br />
Donec a pharetra purus. Duis vel elit ipsum. Proin rhoncus viverra sollicitudin. Curabitur consectetur viverra vestibulum. Nulla vel ante vel lectus interdum laoreet et ac tortor. In interdum, arcu ut venenatis ultrices, nibh massa posuere urna, id dapibus nisl dui non mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam porta, nulla eu sollicitudin placerat, dui arcu fermentum libero, vel dignissim ante augue sit amet est. Aenean a enim urna. Aenean semper eros at mi tristique lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse et arcu id mi imperdiet porta. Sed vel sapien odio, vel imperdiet felis. Maecenas porttitor lacus ac nisi luctus sit amet ullamcorper magna dapibus. Etiam eu lorem in magna elementum sollicitudin.
<br /><br />
Nam placerat leo vitae dui lobortis vulputate. Aliquam congue faucibus erat in luctus. Aenean volutpat aliquam tellus, et cursus massa rhoncus ut. In tincidunt porttitor velit at elementum. Ut felis nunc, porttitor quis varius ut, ullamcorper eget odio. Vivamus magna erat, dictum id volutpat eget, luctus in elit. Cras tempor elementum bibendum. Phasellus imperdiet neque ac lacus rhoncus eget tincidunt dolor imperdiet. Suspendisse potenti. Phasellus porttitor condimentum leo, sit amet tempor dui tristique at. Phasellus tincidunt orci a nisi laoreet mollis. Aenean vel sagittis erat.
<br /><br />
Suspendisse vehicula iaculis est tristique semper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean id enim dapibus lorem posuere sollicitudin. Sed vitae pulvinar nisi. Duis non augue odio. In hac habitasse platea dictumst. Praesent egestas erat eu est mollis in porta mauris auctor. Nunc ultrices scelerisque tempus. Quisque mattis orci eu mauris porttitor et porttitor nulla pulvinar. Curabitur tincidunt leo sit amet eros dapibus id eleifend dui varius. Nulla facilisi. Vivamus nec dolor convallis libero dictum posuere. Integer vestibulum, nulla sed iaculis molestie, leo justo pretium neque, adipiscing sollicitudin turpis turpis ut quam. Integer ac velit orci, ut sollicitudin magna. Vestibulum fermentum sodales ante, quis vulputate mi pellentesque quis.
</div>
</div>
{% endblock %}
</div>
<div id="rightCol">
{% block rightCol %}
<h3 style="padding-top: 15px; text-align: center;">About Us</h3>
<div id="rightText">
<div id="right1">
<p>Since the summer of 2006, a number of theatre practitioners, scholars and theatre lovers have come together under the aegis of the India Theatre Forum (ITF) to try and create a national resource for theatre and a meeting ground for all those who wish to take on the public responsibility of laying the grounds for excellence and diversity in theatrical endeavour. The ITF is a Prithvi Theatre initiative, and is more or less a loose association of people who have come together in the larger interest of Indian theatre. There is a team at the heart of it which gets called the ‘core team’, which currently consists of Akshara K.V., Moloyashree Hashmi, Pravin K.P., Sameera Iyengar, Sanjna Kapoor and Sudhanva Deshpande.</p>
<p>Theatre practice and livelihood in India is unsurprisingly like the country itself – vast, diverse, and often unconnected and unaware of each other’s existence. Much theatre practice is also used to subsisting on meagre resources – which means theatre somehow manages to survive rather than thrive in this country. It also means our dreams for what we can do with theatre – artistically and socially – are invariably limited dreams. We neither strive to imagine our utmost potential nor do we see ourselves as important enough actors in this country’s social fabric.
<span class="rightMore"><a href="Javascript:showNext()">more >>></a></span>
</div>
<div id="right2">
Of course, there are exceptions – people who have thought deeply, believed in the potential of theatre, and shown it consistently in their work. People who have found innovative ways of stepping beyond the struggle of survival and created vibrant theatre communities of performers, audiences and supporters.</p>
<p>The question that led to the creation of the ITF was: can this happenstance become the norm? Can we overcome what we see as limitations, can we learn to identify and recognize opportunities and openings, can we think in terms of long-term growth and sustenance? Such work cannot be done in isolation, but requires the coming together of dedicated and experienced people who have an abiding interest in the field of theatre, and who represent the diverse knowledge and experience base of theatre in this country. It requires the constant exchange of ideas and information, as well as intensive and open debate and discussion.</p>
<p>
In addition to bringing out Our Stage, The ITF is currently working on:
<ul>
<li>Guidelines for Best Practices in Theatre</li>
<li>a website for the theatre community in India</li>
<li>a social security scheme for artists</li>
<li>an arts management programme</li>
<li>a fortnightly e-newsletter</li>
<li>theatre survey</li>
</ul>
Supported by the Arts Management of the Sir Ratan Tata Trust
</p>
</div>
</div>
{% endblock %}
</div>
</div>
</div>
</body>
</html>

71
itf/templates/home.html

@ -0,0 +1,71 @@
{% extends 'festival_wireframe.html' %}
{% block title %}
ITF - Home
{% endblock %}
{% block leftCol %}
<ul id="leftNav">
<li class="currentNav"><a href="/itf/">Home</a></li>
<li><a href="/itf/meetings">Activities</a><div class="helper">ITF Meetings - transcripts, audio, discussions.</div></li>
<li><a href="/itf/projects">Projects</a><div class="helper">Projects undertaken by the ITF...</div></li>
<li><a href="/itf/erang">e-Rang</a><div class="helper">The theatre newsletter...</div></li>
<li><a href="/itf/resources">Resources</a><div class="helper">Downloadable reading materials and resources</div></li>
<li><a href="/itf/surveys">Surveys</a><div class="helper">Surveys about theatre in India...</div></li>
<li><a href="/itf/publications">Publications</a><div class="helper">Publications by the ITF..</div></li>
<li><a href="/itf/people">Participants</a><div class="helper">A list of participants for all ITF meetings</div></li>
</ul>
{% endblock %}
</div>
<div id="centerCol">
{% block centerCol %}
<div id="centerContent">
<h3>Welcome to the ITF Website</h3>
<div class="centerText">
<p>Welcome to the India Theatre Forum Website!</p>
<p>As you will notice very quickly … this site is very much under construction. However we did want to put it up, so you can begin to access some information on the India Theatre Forum itself, and also stay in touch with what we are planning for this site.</p>
<p>Essentially – we want this site to be a hub for Indian theatre – a place where you can come and get, give, share, exchange all sorts of information, ideas, resources and more.</p>
<p>Examples of some things you can get:
<ul>
<li>a space of your own on the site</li>
<li>information on theatre activity, people and groups across India</li>
<li>a calendar of theatre activity across India</li>
<li>a fortnightly newsletter, emailed to your inbox</li>
<li>links between you and people you have worked with</li>
<li>access to offers & needs, where you can ask or browse for theatre needs you have – rehearsal space, costumes, some lighting problem you need to tackle … etc</li>
<li>theatre-related information – schemes, grants, government reports, policies and more</li>
<li>Guidelines for Best Practices in Theatre</li>
</ul>
</p>
<p>Examples of some things you can give:
<ul>
<li>information on yourself and your theatre activity</li>
<li>theatre-related information you have access to</li>
<li>offers of resources you or your group may have</li>
</ul>
</p>
<p>This is a site for you, for us … and can come alive only with your active participation. Do log in so we can keep you informed … and we look forward to having you on board as part of the ITF online community.</p>
</div>
</div>
{% endblock %}

1
itf/templates/index.html

@ -0,0 +1 @@
Welcome :-)

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save