/*!
 * jQuery JavaScript Library v1.3.1
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009)
 * Revision: 6158
 */
(function(){

var 
window = this,
undefined,
_jQuery = window.jQuery,
_$ = window.$,
jQuery = window.jQuery = window.$ = function( selector, context ) {
	return new jQuery.fn.init( selector, context );
},
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
// Is it a simple selector
isSimple = /^.[^:#\[\.,]*$/;
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
selector = selector || document;
if ( selector.nodeType ) {
this[0] = selector;
this.length = 1;
this.context = selector;
return this;
}
if ( typeof selector === "string" ) {
var match = quickExpr.exec( selector );
if ( match && (match[1] || !context) ) {
if ( match[1] )
	selector = jQuery.clean( [ match[1] ], context );
else {
var elem = document.getElementById( match[3] );
if ( elem && elem.id != match[3] )
return jQuery().find( selector );
var ret = jQuery( elem || [] );
ret.context = document;
ret.selector = selector;
return ret;
}
} else
return jQuery( context ).find( selector );
} else if ( jQuery.isFunction( selector ) )
return jQuery( document ).ready( selector );
if ( selector.selector && selector.context ) {
this.selector = selector.selector;
this.context = selector.context;
}
return this.setArray(jQuery.makeArray(selector));
},
selector: "",
jquery: "1.3.1",
size: function() {
return this.length;
},
get: function( num ) {
return num === undefined ?
jQuery.makeArray( this ) :
this[ num ];
},
pushStack: function( elems, name, selector ) {
var ret = jQuery( elems );
ret.prevObject = this;
ret.context = this.context;
if ( name === "find" )
ret.selector = this.selector + (this.selector ? " " : "") + selector;
else if ( name )
ret.selector = this.selector + "." + name + "(" + selector + ")";
return ret;
},
setArray: function( elems ) {
this.length = 0;
Array.prototype.push.apply( this, elems );
return this;
},
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
index: function( elem ) {
return jQuery.inArray(
elem && elem.jquery ? elem[0] : elem
, this );
},
attr: function( name, value, type ) {
var options = name;
if ( typeof name === "string" )
if ( value === undefined )
return this[0] && jQuery[ type || "attr" ]( this[0], name );

else {
options = {};
options[ name ] = value;
}
return this.each(function(i){
for ( name in options )
jQuery.attr(
type ?
this.style :
this,
name, jQuery.prop( this, options[ name ], type, i, name )
);
});
},

css: function( key, value ) {
if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
value = undefined;
return this.attr( key, value, "curCSS" );
},

text: function( text ) {
if ( typeof text !== "object" && text != null )
return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );

var ret = "";

jQuery.each( text || this, function(){
jQuery.each( this.childNodes, function(){
if ( this.nodeType != 8 )
ret += this.nodeType != 1 ?
this.nodeValue :
jQuery.fn.text( [ this ] );
});
});

return ret;
},

wrapAll: function( html ) {
if ( this[0] ) {
var wrap = jQuery( html, this[0].ownerDocument ).clone();
if ( this[0].parentNode )
wrap.insertBefore( this[0] );
wrap.map(function(){
var elem = this;
while ( elem.firstChild )
elem = elem.firstChild;
return elem;
}).append(this);
}

return this;
},

wrapInner: function( html ) {
return this.each(function(){
jQuery( this ).contents().wrapAll( html );
});
},

wrap: function( html ) {
return this.each(function(){
jQuery( this ).wrapAll( html );
});
},

append: function() {
return this.domManip(arguments, true, function(elem){
if (this.nodeType == 1)
this.appendChild( elem );
});
},

prepend: function() {
return this.domManip(arguments, true, function(elem){
if (this.nodeType == 1)
this.insertBefore( elem, this.firstChild );
});
},

before: function() {
return this.domManip(arguments, false, function(elem){
this.parentNode.insertBefore( elem, this );
});
},

after: function() {
return this.domManip(arguments, false, function(elem){
this.parentNode.insertBefore( elem, this.nextSibling );
});
},

end: function() {
return this.prevObject || jQuery( [] );
},
push: [].push,
find: function( selector ) {
if ( this.length === 1 && !/,/.test(selector) ) {
var ret = this.pushStack( [], "find", selector );
ret.length = 0;
jQuery.find( selector, this[0], ret );
return ret;
} else {
var elems = jQuery.map(this, function(elem){
return jQuery.find( selector, elem );
});

return this.pushStack( /[^+>] [^+>]/.test( selector ) ?
jQuery.unique( elems ) :
elems, "find", selector );
}
},

clone: function( events ) {
// Do the clone
var ret = this.map(function(){
if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
var clone = this.cloneNode(true),
container = document.createElement("div");
container.appendChild(clone);
return jQuery.clean([container.innerHTML])[0];
} else
return this.cloneNode(true);
});

var clone = ret.find("*").andSelf().each(function(){
if ( this[ expando ] !== undefined )
this[ expando ] = null;
});
if ( events === true )
this.find("*").andSelf().each(function(i){
if (this.nodeType == 3)
return;
var events = jQuery.data( this, "events" );

for ( var type in events )
for ( var handler in events[ type ] )
jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
});

// Return the cloned set
return ret;
},

filter: function( selector ) {
return this.pushStack(
jQuery.isFunction( selector ) &&
jQuery.grep(this, function(elem, i){
return selector.call( elem, i );
}) ||

jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
return elem.nodeType === 1;
}) ), "filter", selector );
},

closest: function( selector ) {
var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null;

return this.map(function(){
var cur = this;
while ( cur && cur.ownerDocument ) {
if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) )
return cur;
cur = cur.parentNode;
}
});
},

not: function( selector ) {
if ( typeof selector === "string" )
if ( isSimple.test( selector ) )
return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
else
selector = jQuery.multiFilter( selector, this );

var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
return this.filter(function() {
return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
});
},

add: function( selector ) {
return this.pushStack( jQuery.unique( jQuery.merge(
this.get(),
typeof selector === "string" ?
jQuery( selector ) :
jQuery.makeArray( selector )
)));
},

is: function( selector ) {
return !!selector && jQuery.multiFilter( selector, this ).length > 0;
},

hasClass: function( selector ) {
return !!selector && this.is( "." + selector );
},

val: function( value ) {
if ( value === undefined ) {			
var elem = this[0];

if ( elem ) {
if( jQuery.nodeName( elem, 'option' ) )
return (elem.attributes.value || {}).specified ? elem.value : elem.text;
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
values = [],
options = elem.options,
one = elem.type == "select-one";
if ( index < 0 )
return null;
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
var option = options[ i ];

if ( option.selected ) {
value = jQuery(option).val();
if ( one )
return value;
values.push( value );
}
}

return values;				
}
return (elem.value || "").replace(/\r/g, "");
}
return undefined;
}

if ( typeof value === "number" )
value += '';

return this.each(function(){
if ( this.nodeType != 1 )
return;

if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
this.checked = (jQuery.inArray(this.value, value) >= 0 ||
jQuery.inArray(this.name, value) >= 0);

else if ( jQuery.nodeName( this, "select" ) ) {
var values = jQuery.makeArray(value);

jQuery( "option", this ).each(function(){
this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
jQuery.inArray( this.text, values ) >= 0);
});

if ( !values.length )
this.selectedIndex = -1;

} else
this.value = value;
});
},

html: function( value ) {
return value === undefined ?
(this[0] ?
this[0].innerHTML :
null) :
this.empty().append( value );
},

replaceWith: function( value ) {
return this.after( value ).remove();
},

eq: function( i ) {
return this.slice( i, +i + 1 );
},

slice: function() {
return this.pushStack( Array.prototype.slice.apply( this, arguments ),
"slice", Array.prototype.slice.call(arguments).join(",") );
},

map: function( callback ) {
return this.pushStack( jQuery.map(this, function(elem, i){
return callback.call( elem, i, elem );
}));
},

andSelf: function() {
return this.add( this.prevObject );
},

domManip: function( args, table, callback ) {
if ( this[0] ) {
var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
first = fragment.firstChild,
extra = this.length > 1 ? fragment.cloneNode(true) : fragment;

if ( first )
for ( var i = 0, l = this.length; i < l; i++ )
callback.call( root(this[i], first), i > 0 ? extra.cloneNode(true) : fragment );

if ( scripts )
jQuery.each( scripts, evalScript );
}

return this;

function root( elem, cur ) {
return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
(elem.getElementsByTagName("tbody")[0] ||
elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
elem;
}
}
};
jQuery.fn.init.prototype = jQuery.fn;

function evalScript( i, elem ) {
if ( elem.src )
jQuery.ajax({
url: elem.src,
async: false,
dataType: "script"
});

else
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );

if ( elem.parentNode )
elem.parentNode.removeChild( elem );
}

function now(){
return +new Date;
}

jQuery.extend = jQuery.fn.extend = function() {
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
i = 2;
}
if ( typeof target !== "object" && !jQuery.isFunction(target) )
target = {};
if ( length == i ) {
target = this;
--i;
}

for ( ; i < length; i++ )
if ( (options = arguments[ i ]) != null )
for ( var name in options ) {
var src = target[ name ], copy = options[ name ];
if ( target === copy )
continue;
if ( deep && copy && typeof copy === "object" && !copy.nodeType )
target[ name ] = jQuery.extend( deep, 
src || ( copy.length != null ? [ ] : { } )
, copy );
else if ( copy !== undefined )
target[ name ] = copy;

}
return target;
};
var	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
defaultView = document.defaultView || {},
toString = Object.prototype.toString;

jQuery.extend({
noConflict: function( deep ) {
window.$ = _$;

if ( deep )
window.jQuery = _jQuery;

return jQuery;
},
isFunction: function( obj ) {
return toString.call(obj) === "[object Function]";
},

isArray: function( obj ) {
return toString.call(obj) === "[object Array]";
},
isXMLDoc: function( elem ) {
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
},
globalEval: function( data ) {
data = jQuery.trim( data );

if ( data ) {
var head = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");

script.type = "text/javascript";
if ( jQuery.support.scriptEval )
script.appendChild( document.createTextNode( data ) );
else
script.text = data;
head.insertBefore( script, head.firstChild );
head.removeChild( script );
}
},

nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
},
each: function( object, callback, args ) {
var name, i = 0, length = object.length;

if ( args ) {
if ( length === undefined ) {
for ( name in object )
if ( callback.apply( object[ name ], args ) === false )
break;
} else
for ( ; i < length; )
if ( callback.apply( object[ i++ ], args ) === false )
break;

// A special, fast, case for the most common use of each
} else {
if ( length === undefined ) {
for ( name in object )
if ( callback.call( object[ name ], name, object[ name ] ) === false )
break;
} else
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
}

return object;
},

prop: function( elem, value, type, i, name ) {
if ( jQuery.isFunction( value ) )
value = value.call( elem, i );
return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
value + "px" :
value;
},
className: {
add: function( elem, classNames ) {
jQuery.each((classNames || "").split(/\s+/), function(i, className){
if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
elem.className += (elem.className ? " " : "") + className;
});
},
remove: function( elem, classNames ) {
if (elem.nodeType == 1)
elem.className = classNames !== undefined ?
jQuery.grep(elem.className.split(/\s+/), function(className){
return !jQuery.className.has( classNames, className );
}).join(" ") :
"";
},
has: function( elem, className ) {
return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
}
},
swap: function( elem, options, callback ) {
var old = {};
for ( var name in options ) {
old[ name ] = elem.style[ name ];
elem.style[ name ] = options[ name ];
}

callback.call( elem );
for ( var name in options )
elem.style[ name ] = old[ name ];
},

css: function( elem, name, force ) {
if ( name == "width" || name == "height" ) {
var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];

function getWH() {
val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
var padding = 0, border = 0;
jQuery.each( which, function() {
padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
});
val -= Math.round(padding + border);
}

if ( jQuery(elem).is(":visible") )
getWH();
else
jQuery.swap( elem, props, getWH );

return Math.max(0, val);
}

return jQuery.curCSS( elem, name, force );
},

curCSS: function( elem, name, force ) {
var ret, style = elem.style;
if ( name == "opacity" && !jQuery.support.opacity ) {
ret = jQuery.attr( style, "opacity" );
return ret == "" ?
"1" :
ret;
}
if ( name.match( /float/i ) )
name = styleFloat;
if ( !force && style && style[ name ] )
ret = style[ name ];
else if ( defaultView.getComputedStyle ) {
if ( name.match( /float/i ) )
name = "float";
name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
var computedStyle = defaultView.getComputedStyle( elem, null );
if ( computedStyle )
ret = computedStyle.getPropertyValue( name );
if ( name == "opacity" && ret == "" )
ret = "1";
} else if ( elem.currentStyle ) {
var camelCase = name.replace(/\-(\w)/g, function(all, letter){
return letter.toUpperCase();
});
ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
var left = style.left, rsLeft = elem.runtimeStyle.left;
elem.runtimeStyle.left = elem.currentStyle.left;
style.left = ret || 0;
ret = style.pixelLeft + "px";
style.left = left;
elem.runtimeStyle.left = rsLeft;
}
}
return ret;
},
clean: function( elems, context, fragment ) {
context = context || document;
if ( typeof context.createElement === "undefined" )
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
if ( match )
return [ context.createElement( match[1] ) ];
}
var ret = [], scripts = [], div = context.createElement("div");
jQuery.each(elems, function(i, elem){
if ( typeof elem === "number" )
elem += '';

if ( !elem )
return;
if ( typeof elem === "string" ) {
elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
all :
front + "></" + tag + ">";
});
var tags = jQuery.trim( elem ).toLowerCase();
var wrap =
// option or optgroup
!tags.indexOf("<opt") &&
[ 1, "<select multiple='multiple'>", "</select>" ] ||

!tags.indexOf("<leg") &&
[ 1, "<fieldset>", "</fieldset>" ] ||

tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
[ 1, "<table>", "</table>" ] ||

!tags.indexOf("<tr") &&
[ 2, "<table><tbody>", "</tbody></table>" ] ||

(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||

!tags.indexOf("<col") &&
[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||

!jQuery.support.htmlSerialize &&
[ 1, "div<div>", "</div>" ] ||

[ 0, "", "" ];

div.innerHTML = wrap[1] + elem + wrap[2];
while ( wrap[0]-- )
div = div.lastChild;
if ( !jQuery.support.tbody ) {
var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
div.firstChild && div.firstChild.childNodes :
wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
div.childNodes :
[];

for ( var j = tbody.length - 1; j >= 0 ; --j )
if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
tbody[ j ].parentNode.removeChild( tbody[ j ] );

}
if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );

elem = jQuery.makeArray( div.childNodes );
}

if ( elem.nodeType )
ret.push( elem );
else
ret = jQuery.merge( ret, elem );

});

if ( fragment ) {
for ( var i = 0; ret[i]; i++ ) {
if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
} else {
if ( ret[i].nodeType === 1 )
ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
fragment.appendChild( ret[i] );
}
}

return scripts;
}

return ret;
},

attr: function( elem, name, value ) {
if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
return undefined;

var notxml = !jQuery.isXMLDoc( elem ),
set = value !== undefined;
name = notxml && jQuery.props[ name ] || name;
if ( elem.tagName ) {
var special = /href|src|style/.test( name );
if ( name == "selected" && elem.parentNode )
elem.parentNode.selectedIndex;
if ( name in elem && notxml && !special ) {
if ( set ){
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
throw "type property can't be changed";
elem[ name ] = value;
}
if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
return elem.getAttributeNode( name ).nodeValue;
if ( name == "tabIndex" ) {
var attributeNode = elem.getAttributeNode( "tabIndex" );
return attributeNode && attributeNode.specified
? attributeNode.value
: elem.nodeName.match(/(button|input|object|select|textarea)/i)
? 0
: elem.nodeName.match(/^(a|area)$/i) && elem.href
? 0
: undefined;
}
return elem[ name ];
}
if ( !jQuery.support.style && notxml &&  name == "style" )
return jQuery.attr( elem.style, "cssText", value );
if ( set )
elem.setAttribute( name, "" + value );
var attr = !jQuery.support.hrefNormalized && notxml && special
? elem.getAttribute( name, 2 )
: elem.getAttribute( name );
return attr === null ? undefined : attr;
}
if ( !jQuery.support.opacity && name == "opacity" ) {
if ( set ) {
elem.zoom = 1;
elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
}

return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
"";
}

name = name.replace(/-([a-z])/ig, function(all, letter){
return letter.toUpperCase();
});

if ( set )
elem[ name ] = value;

return elem[ name ];
},

trim: function( text ) {
return (text || "").replace( /^\s+|\s+$/g, "" );
},

makeArray: function( array ) {
var ret = [];

if( array != null ){
var i = array.length;
// The window, strings (and functions) also have 'length'
if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
ret[0] = array;
else
while( i )
ret[--i] = array[i];
}

return ret;
},

inArray: function( elem, array ) {
for ( var i = 0, length = array.length; i < length; i++ )
// Use === because on IE, window == document
if ( array[ i ] === elem )
return i;

return -1;
},

merge: function( first, second ) {
var i = 0, elem, pos = first.length;
if ( !jQuery.support.getAll ) {
while ( (elem = second[ i++ ]) != null )
if ( elem.nodeType != 8 )
first[ pos++ ] = elem;

} else
while ( (elem = second[ i++ ]) != null )
first[ pos++ ] = elem;

return first;
},

unique: function( array ) {
var ret = [], done = {};

try {

for ( var i = 0, length = array.length; i < length; i++ ) {
var id = jQuery.data( array[ i ] );

if ( !done[ id ] ) {
done[ id ] = true;
ret.push( array[ i ] );
}
}

} catch( e ) {
ret = array;
}

return ret;
},

grep: function( elems, callback, inv ) {
var ret = [];
for ( var i = 0, length = elems.length; i < length; i++ )
if ( !inv != !callback( elems[ i ], i ) )
ret.push( elems[ i ] );

return ret;
},

map: function( elems, callback ) {
var ret = [];
for ( var i = 0, length = elems.length; i < length; i++ ) {
var value = callback( elems[ i ], i );

if ( value != null )
ret[ ret.length ] = value;
}

return ret.concat.apply( [], ret );
}
});

var userAgent = navigator.userAgent.toLowerCase();
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
};

jQuery.each({
parent: function(elem){return elem.parentNode;},
parents: function(elem){return jQuery.dir(elem,"parentNode");},
next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
children: function(elem){return jQuery.sibling(elem.firstChild);},
contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
}, function(name, fn){
jQuery.fn[ name ] = function( selector ) {
var ret = jQuery.map( this, fn );

if ( selector && typeof selector == "string" )
ret = jQuery.multiFilter( selector, ret );

return this.pushStack( jQuery.unique( ret ), name, selector );
};
});

jQuery.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function(name, original){
jQuery.fn[ name ] = function() {
var args = arguments;

return this.each(function(){
for ( var i = 0, length = args.length; i < length; i++ )
jQuery( args[ i ] )[ original ]( this );
});
};
});

jQuery.each({
removeAttr: function( name ) {
jQuery.attr( this, name, "" );
if (this.nodeType == 1)
this.removeAttribute( name );
},

addClass: function( classNames ) {
jQuery.className.add( this, classNames );
},

removeClass: function( classNames ) {
jQuery.className.remove( this, classNames );
},

toggleClass: function( classNames, state ) {
if( typeof state !== "boolean" )
state = !jQuery.className.has( this, classNames );
jQuery.className[ state ? "add" : "remove" ]( this, classNames );
},

remove: function( selector ) {
if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
// Prevent memory leaks
jQuery( "*", this ).add([this]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
if (this.parentNode)
this.parentNode.removeChild( this );
}
},

empty: function() {
// Remove element nodes and prevent memory leaks
jQuery( ">*", this ).remove();

// Remove any remaining nodes
while ( this.firstChild )
this.removeChild( this.firstChild );
}
}, function(name, fn){
jQuery.fn[ name ] = function(){
return this.each( fn, arguments );
};
});

// Helper function used by the dimensions and offset modules
function num(elem, prop) {
return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
}
var expando = "jQuery" + now(), uuid = 0, windowData = {};

jQuery.extend({
cache: {},

data: function( elem, name, data ) {
elem = elem == window ?
windowData :
elem;

var id = elem[ expando ];
if ( !id )
id = elem[ expando ] = ++uuid;
if ( name && !jQuery.cache[ id ] )
jQuery.cache[ id ] = {};
if ( data !== undefined )
jQuery.cache[ id ][ name ] = data;
return name ?
jQuery.cache[ id ][ name ] :
id;
},

removeData: function( elem, name ) {
elem = elem == window ?
windowData :
elem;

var id = elem[ expando ];
if ( name ) {
if ( jQuery.cache[ id ] ) {
delete jQuery.cache[ id ][ name ];
name = "";
for ( name in jQuery.cache[ id ] )
break;
if ( !name )
jQuery.removeData( elem );
}
} else {
try {
delete elem[ expando ];
} catch(e){
if ( elem.removeAttribute )
elem.removeAttribute( expando );
}
delete jQuery.cache[ id ];
}
},
queue: function( elem, type, data ) {
if ( elem ){

type = (type || "fx") + "queue";

var q = jQuery.data( elem, type );

if ( !q || jQuery.isArray(data) )
q = jQuery.data( elem, type, jQuery.makeArray(data) );
else if( data )
q.push( data );

}
return q;
},

dequeue: function( elem, type ){
var queue = jQuery.queue( elem, type ),
fn = queue.shift();

if( !type || type === "fx" )
fn = queue[0];

if( fn !== undefined )
fn.call(elem);
}
});

jQuery.fn.extend({
data: function( key, value ){
var parts = key.split(".");
parts[1] = parts[1] ? "." + parts[1] : "";

if ( value === undefined ) {
var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);

if ( data === undefined && this.length )
data = jQuery.data( this[0], key );

return data === undefined && parts[1] ?
this.data( parts[0] ) :
data;
} else
return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
jQuery.data( this, key, value );
});
},

removeData: function( key ){
return this.each(function(){
jQuery.removeData( this, key );
});
},
queue: function(type, data){
if ( typeof type !== "string" ) {
data = type;
type = "fx";
}

if ( data === undefined )
return jQuery.queue( this[0], type );

return this.each(function(){
var queue = jQuery.queue( this, type, data );

if( type == "fx" && queue.length == 1 )
queue[0].call(this);
});
},
dequeue: function(type){
return this.each(function(){
jQuery.dequeue( this, type );
});
}
});
(function(){

var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
done = 0,
toString = Object.prototype.toString;

var Sizzle = function(selector, context, results, seed) {
results = results || [];
context = context || document;

if ( context.nodeType !== 1 && context.nodeType !== 9 )
return [];

if ( !selector || typeof selector !== "string" ) {
return results;
}

var parts = [], m, set, checkSet, check, mode, extra, prune = true;

// Reset the position of the chunker regexp (start from head)
chunker.lastIndex = 0;

while ( (m = chunker.exec(selector)) !== null ) {
parts.push( m[1] );

if ( m[2] ) {
extra = RegExp.rightContext;
break;
}
}

if ( parts.length > 1 && origPOS.exec( selector ) ) {
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
set = posProcess( parts[0] + parts[1], context );
} else {
set = Expr.relative[ parts[0] ] ?
[ context ] :
Sizzle( parts.shift(), context );

while ( parts.length ) {
selector = parts.shift();

if ( Expr.relative[ selector ] )
selector += parts.shift();

set = posProcess( selector, set );
}
}
} else {
var ret = seed ?
{ expr: parts.pop(), set: makeArray(seed) } :
Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
set = Sizzle.filter( ret.expr, ret.set );

if ( parts.length > 0 ) {
checkSet = makeArray(set);
} else {
prune = false;
}

while ( parts.length ) {
var cur = parts.pop(), pop = cur;

if ( !Expr.relative[ cur ] ) {
cur = "";
} else {
pop = parts.pop();
}

if ( pop == null ) {
pop = context;
}

Expr.relative[ cur ]( checkSet, pop, isXML(context) );
}
}

if ( !checkSet ) {
checkSet = set;
}

if ( !checkSet ) {
throw "Syntax error, unrecognized expression: " + (cur || selector);
}

if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
} else if ( context.nodeType === 1 ) {
for ( var i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
results.push( set[i] );
}
}
} else {
for ( var i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
results.push( set[i] );
}
}
}
} else {
makeArray( checkSet, results );
}

if ( extra ) {
Sizzle( extra, context, results, seed );
}

return results;
};

Sizzle.matches = function(expr, set){
return Sizzle(expr, null, null, set);
};

Sizzle.find = function(expr, context, isXML){
var set, match;

if ( !expr ) {
return [];
}

for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
var type = Expr.order[i], match;

if ( (match = Expr.match[ type ].exec( expr )) ) {
var left = RegExp.leftContext;

if ( left.substr( left.length - 1 ) !== "\\" ) {
match[1] = (match[1] || "").replace(/\\/g, "");
set = Expr.find[ type ]( match, context, isXML );
if ( set != null ) {
expr = expr.replace( Expr.match[ type ], "" );
break;
}
}
}
}

if ( !set ) {
set = context.getElementsByTagName("*");
}

return {set: set, expr: expr};
};

Sizzle.filter = function(expr, set, inplace, not){
var old = expr, result = [], curLoop = set, match, anyFound;

while ( expr && set.length ) {
for ( var type in Expr.filter ) {
if ( (match = Expr.match[ type ].exec( expr )) != null ) {
var filter = Expr.filter[ type ], found, item;
anyFound = false;

if ( curLoop == result ) {
result = [];
}

if ( Expr.preFilter[ type ] ) {
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not );

if ( !match ) {
anyFound = found = true;
} else if ( match === true ) {
continue;
}
}

if ( match ) {
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
if ( item ) {
found = filter( item, match, i, curLoop );
var pass = not ^ !!found;

if ( inplace && found != null ) {
if ( pass ) {
	anyFound = true;
} else {
	curLoop[i] = false;
}
} else if ( pass ) {
result.push( item );
anyFound = true;
}
}
}
}

if ( found !== undefined ) {
if ( !inplace ) {
curLoop = result;
}

expr = expr.replace( Expr.match[ type ], "" );

if ( !anyFound ) {
return [];
}

break;
}
}
}

expr = expr.replace(/\s*,\s*/, "");

// Improper expression
if ( expr == old ) {
if ( anyFound == null ) {
throw "Syntax error, unrecognized expression: " + expr;
} else {
break;
}
}

old = expr;
}

return curLoop;
};

var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
match: {
ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function(elem){
return elem.getAttribute("href");
}
},
relative: {
"+": function(checkSet, part){
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var cur = elem.previousSibling;
while ( cur && cur.nodeType !== 1 ) {
cur = cur.previousSibling;
}
checkSet[i] = typeof part === "string" ?
cur || false :
cur === part;
}
}

if ( typeof part === "string" ) {
Sizzle.filter( part, checkSet, true );
}
},
">": function(checkSet, part, isXML){
if ( typeof part === "string" && !/\W/.test(part) ) {
part = isXML ? part : part.toUpperCase();

for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName === part ? parent : false;
}
}
} else {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
checkSet[i] = typeof part === "string" ?
elem.parentNode :
elem.parentNode === part;
}
}

if ( typeof part === "string" ) {
Sizzle.filter( part, checkSet, true );
}
}
},
"": function(checkSet, part, isXML){
var doneName = "done" + (done++), checkFn = dirCheck;

if ( !part.match(/\W/) ) {
var nodeCheck = part = isXML ? part : part.toUpperCase();
checkFn = dirNodeCheck;
}

checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
},
"~": function(checkSet, part, isXML){
var doneName = "done" + (done++), checkFn = dirCheck;

if ( typeof part === "string" && !part.match(/\W/) ) {
var nodeCheck = part = isXML ? part : part.toUpperCase();
checkFn = dirNodeCheck;
}

checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
}
},
find: {
ID: function(match, context, isXML){
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
return m ? [m] : [];
}
},
NAME: function(match, context, isXML){
if ( typeof context.getElementsByName !== "undefined" && !isXML ) {
return context.getElementsByName(match[1]);
}
},
TAG: function(match, context){
return context.getElementsByTagName(match[1]);
}
},
preFilter: {
CLASS: function(match, curLoop, inplace, result, not){
match = " " + match[1].replace(/\\/g, "") + " ";

var elem;
for ( var i = 0; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
if ( not ^ (" " + elem.className + " ").indexOf(match) >= 0 ) {
if ( !inplace )
result.push( elem );
} else if ( inplace ) {
curLoop[i] = false;
}
}
}

return false;
},
ID: function(match){
return match[1].replace(/\\/g, "");
},
TAG: function(match, curLoop){
for ( var i = 0; curLoop[i] === false; i++ ){}
return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
},
CHILD: function(match){
if ( match[1] == "nth" ) {
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);

// calculate the numbers (first)n+(last) including if they are negative
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0;
}

// TODO: Move to normal caching system
match[0] = "done" + (done++);

return match;
},
ATTR: function(match){
var name = match[1].replace(/\\/g, "");

if ( Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}

if ( match[2] === "~=" ) {
match[4] = " " + match[4] + " ";
}

return match;
},
PSEUDO: function(match, curLoop, inplace, result, not){
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
if ( match[3].match(chunker).length > 1 ) {
match[3] = Sizzle(match[3], null, null, curLoop);
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
if ( !inplace ) {
result.push.apply( result, ret );
}
return false;
}
} else if ( Expr.match.POS.test( match[0] ) ) {
return true;
}

return match;
},
POS: function(match){
match.unshift( true );
return match;
}
},
filters: {
enabled: function(elem){
return elem.disabled === false && elem.type !== "hidden";
},
disabled: function(elem){
return elem.disabled === true;
},
checked: function(elem){
return elem.checked === true;
},
selected: function(elem){
elem.parentNode.selectedIndex;
return elem.selected === true;
},
parent: function(elem){
return !!elem.firstChild;
},
empty: function(elem){
return !elem.firstChild;
},
has: function(elem, i, match){
return !!Sizzle( match[3], elem ).length;
},
header: function(elem){
return /h\d/i.test( elem.nodeName );
},
text: function(elem){
return "text" === elem.type;
},
radio: function(elem){
return "radio" === elem.type;
},
checkbox: function(elem){
return "checkbox" === elem.type;
},
file: function(elem){
return "file" === elem.type;
},
password: function(elem){
return "password" === elem.type;
},
submit: function(elem){
return "submit" === elem.type;
},
image: function(elem){
return "image" === elem.type;
},
reset: function(elem){
return "reset" === elem.type;
},
button: function(elem){
return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
},
input: function(elem){
return /input|select|textarea|button/i.test(elem.nodeName);
}
},
setFilters: {
first: function(elem, i){
return i === 0;
},
last: function(elem, i, match, array){
return i === array.length - 1;
},
even: function(elem, i){
return i % 2 === 0;
},
odd: function(elem, i){
return i % 2 === 1;
},
lt: function(elem, i, match){
return i < match[3] - 0;
},
gt: function(elem, i, match){
return i > match[3] - 0;
},
nth: function(elem, i, match){
return match[3] - 0 == i;
},
eq: function(elem, i, match){
return match[3] - 0 == i;
}
},
filter: {
CHILD: function(elem, match){
var type = match[1], parent = elem.parentNode;

var doneName = match[0];

if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
var count = 1;

for ( var node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType == 1 ) {
node.nodeIndex = count++;
}
}

parent[ doneName ] = count - 1;
}

if ( type == "first" ) {
return elem.nodeIndex == 1;
} else if ( type == "last" ) {
return elem.nodeIndex == parent[ doneName ];
} else if ( type == "only" ) {
return parent[ doneName ] == 1;
} else if ( type == "nth" ) {
var add = false, first = match[2], last = match[3];

if ( first == 1 && last == 0 ) {
return true;
}

if ( first == 0 ) {
if ( elem.nodeIndex == last ) {
add = true;
}
} else if ( (elem.nodeIndex - last) % first == 0 && (elem.nodeIndex - last) / first >= 0 ) {
add = true;
}

return add;
}
},
PSEUDO: function(elem, match, i, array){
var name = match[1], filter = Expr.filters[ name ];

if ( filter ) {
return filter( elem, i, match, array );
} else if ( name === "contains" ) {
return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
} else if ( name === "not" ) {
var not = match[3];

for ( var i = 0, l = not.length; i < l; i++ ) {
if ( not[i] === elem ) {
return false;
}
}

return true;
}
},
ID: function(elem, match){
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
TAG: function(elem, match){
return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
},
CLASS: function(elem, match){
return match.test( elem.className );
},
ATTR: function(elem, match){
var result = Expr.attrHandle[ match[1] ] ? Expr.attrHandle[ match[1] ]( elem ) : elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
return result == null ?
type === "!=" :
type === "=" ?
value === check :
type === "*=" ?
value.indexOf(check) >= 0 :
type === "~=" ?
(" " + value + " ").indexOf(check) >= 0 :
!match[4] ?
result :
type === "!=" ?
value != check :
type === "^=" ?
value.indexOf(check) === 0 :
type === "$=" ?
value.substr(value.length - check.length) === check :
type === "|=" ?
value === check || value.substr(0, check.length + 1) === check + "-" :
false;
},
POS: function(elem, match, i, array){
var name = match[2], filter = Expr.setFilters[ name ];

if ( filter ) {
return filter( elem, i, match, array );
}
}
}
};

var origPOS = Expr.match.POS;

for ( var type in Expr.match ) {
Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
}

var makeArray = function(array, results) {
array = Array.prototype.slice.call( array );

if ( results ) {
results.push.apply( results, array );
return results;
}

return array;
};
try {
Array.prototype.slice.call( document.documentElement.childNodes );
} catch(e){
makeArray = function(array, results) {
var ret = results || [];

if ( toString.call(array) === "[object Array]" ) {
Array.prototype.push.apply( ret, array );
} else {
if ( typeof array.length === "number" ) {
for ( var i = 0, l = array.length; i < l; i++ ) {
ret.push( array[i] );
}
} else {
for ( var i = 0; array[i]; i++ ) {
ret.push( array[i] );
}
}
}

return ret;
};
}
(function(){
var form = document.createElement("form"),
id = "script" + (new Date).getTime();
form.innerHTML = "<input name='" + id + "'/>";
var root = document.documentElement;
root.insertBefore( form, root.firstChild );
if ( !!document.getElementById( id ) ) {
Expr.find.ID = function(match, context, isXML){
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
}
};

Expr.filter.ID = function(elem, match){
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match;
};
}

root.removeChild( form );
})();

(function(){
var div = document.createElement("div");
div.appendChild( document.createComment("") );
if ( div.getElementsByTagName("*").length > 0 ) {
Expr.find.TAG = function(match, context){
var results = context.getElementsByTagName(match[1]);
if ( match[1] === "*" ) {
var tmp = [];
for ( var i = 0; results[i]; i++ ) {
if ( results[i].nodeType === 1 ) {
tmp.push( results[i] );
}
}

results = tmp;
}

return results;
};
}
div.innerHTML = "<a href='#'></a>";
if ( div.firstChild && div.firstChild.getAttribute("href") !== "#" ) {
Expr.attrHandle.href = function(elem){
return elem.getAttribute("href", 2);
};
}
})();

if ( document.querySelectorAll ) (function(){
var oldSizzle = Sizzle, div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>";
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
Sizzle = function(query, context, extra, seed){
context = context || document;
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(e){}
}

return oldSizzle(query, context, extra, seed);
};

Sizzle.find = oldSizzle.find;
Sizzle.filter = oldSizzle.filter;
Sizzle.selectors = oldSizzle.selectors;
Sizzle.matches = oldSizzle.matches;
})();

if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) {
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function(match, context) {
return context.getElementsByClassName(match[1]);
};
}

function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
elem = elem[dir];
var match = false;

while ( elem && elem.nodeType ) {
var done = elem[doneName];
if ( done ) {
match = checkSet[ done ];
break;
}

if ( elem.nodeType === 1 && !isXML )
elem[doneName] = i;

if ( elem.nodeName === cur ) {
match = elem;
break;
}

elem = elem[dir];
}

checkSet[i] = match;
}
}
}

function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
elem = elem[dir];
var match = false;

while ( elem && elem.nodeType ) {
if ( elem[doneName] ) {
match = checkSet[ elem[doneName] ];
break;
}

if ( elem.nodeType === 1 ) {
if ( !isXML )
elem[doneName] = i;

if ( typeof cur !== "string" ) {
if ( elem === cur ) {
match = true;
break;
}

} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
match = elem;
break;
}
}

elem = elem[dir];
}

checkSet[i] = match;
}
}
}

var contains = document.compareDocumentPosition ?  function(a, b){
return a.compareDocumentPosition(b) & 16;
} : function(a, b){
return a !== b && (a.contains ? a.contains(b) : true);
};

var isXML = function(elem){
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
!!elem.ownerDocument && isXML( elem.ownerDocument );
};

var posProcess = function(selector, context){
var tmpSet = [], later = "", match,
root = context.nodeType ? [context] : context;
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
later += match[0];
selector = selector.replace( Expr.match.PSEUDO, "" );
}

selector = Expr.relative[selector] ? selector + "*" : selector;

for ( var i = 0, l = root.length; i < l; i++ ) {
Sizzle( selector, root[i], tmpSet );
}

return Sizzle.filter( later, tmpSet );
};
jQuery.find = Sizzle;
jQuery.filter = Sizzle.filter;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;

Sizzle.selectors.filters.hidden = function(elem){
return "hidden" === elem.type ||
jQuery.css(elem, "display") === "none" ||
jQuery.css(elem, "visibility") === "hidden";
};

Sizzle.selectors.filters.visible = function(elem){
return "hidden" !== elem.type &&
jQuery.css(elem, "display") !== "none" &&
jQuery.css(elem, "visibility") !== "hidden";
};

Sizzle.selectors.filters.animated = function(elem){
return jQuery.grep(jQuery.timers, function(fn){
return elem === fn.elem;
}).length;
};

jQuery.multiFilter = function( expr, elems, not ) {
if ( not ) {
expr = ":not(" + expr + ")";
}

return Sizzle.matches(expr, elems);
};

jQuery.dir = function( elem, dir ){
var matched = [], cur = elem[dir];
while ( cur && cur != document ) {
if ( cur.nodeType == 1 )
matched.push( cur );
cur = cur[dir];
}
return matched;
};

jQuery.nth = function(cur, result, dir, elem){
result = result || 1;
var num = 0;

for ( ; cur; cur = cur[dir] )
if ( cur.nodeType == 1 && ++num == result )
break;

return cur;
};

jQuery.sibling = function(n, elem){
var r = [];

for ( ; n; n = n.nextSibling ) {
if ( n.nodeType == 1 && n != elem )
r.push( n );
}

return r;
};

return;

window.Sizzle = Sizzle;

})();
jQuery.event = {
add: function(elem, types, handler, data) {
if ( elem.nodeType == 3 || elem.nodeType == 8 )
return;
if ( elem.setInterval && elem != window )
elem = window;
if ( !handler.guid )
handler.guid = this.guid++;
if ( data !== undefined ) {
var fn = handler;
handler = this.proxy( fn );
handler.data = data;
}
var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
jQuery.event.handle.apply(arguments.callee.elem, arguments) :
undefined;
});
handle.elem = elem;
jQuery.each(types.split(/\s+/), function(index, type) {
var namespaces = type.split(".");
type = namespaces.shift();
handler.type = namespaces.slice().sort().join(".");
var handlers = events[type];
if ( jQuery.event.specialAll[type] )
jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
if (!handlers) {
handlers = events[type] = {};
if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
if (elem.addEventListener)
elem.addEventListener(type, handle, false);
else if (elem.attachEvent)
elem.attachEvent("on" + type, handle);
}
}
handlers[handler.guid] = handler;
jQuery.event.global[type] = true;
});
elem = null;
},

guid: 1,
global: {},
remove: function(elem, types, handler) {
if ( elem.nodeType == 3 || elem.nodeType == 8 )
return;

var events = jQuery.data(elem, "events"), ret, index;

if ( events ) {
// Unbind all events for the element
if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
for ( var type in events )
this.remove( elem, type + (types || "") );
else {
// types is actually an event object here
if ( types.type ) {
handler = types.handler;
types = types.type;
}
jQuery.each(types.split(/\s+/), function(index, type){
var namespaces = type.split(".");
type = namespaces.shift();
var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
if ( events[type] ) {
if ( handler )
delete events[type][handler.guid];
else
for ( var handle in events[type] )
if ( namespace.test(events[type][handle].type) )
	delete events[type][handle];
if ( jQuery.event.specialAll[type] )
jQuery.event.specialAll[type].teardown.call(elem, namespaces);
for ( ret in events[type] ) break;
if ( !ret ) {
if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
if (elem.removeEventListener)
	elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
else if (elem.detachEvent)
	elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
}
ret = null;
delete events[type];
}
}
});
}

for ( ret in events ) break;
if ( !ret ) {
var handle = jQuery.data( elem, "handle" );
if ( handle ) handle.elem = null;
jQuery.removeData( elem, "events" );
jQuery.removeData( elem, "handle" );
}
}
},
trigger: function( event, data, elem, bubbling ) {
var type = event.type || event;
if( !bubbling ){
event = typeof event === "object" ?
event[expando] ? event :
jQuery.extend( jQuery.Event(type), event ) :
jQuery.Event(type);
if ( type.indexOf("!") >= 0 ) {
event.type = type = type.slice(0, -1);
event.exclusive = true;
}
if ( !elem ) {
event.stopPropagation();
if ( this.global[type] )
jQuery.each( jQuery.cache, function(){
if ( this.events && this.events[type] )
jQuery.event.trigger( event, data, this.handle.elem );
});
}
if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
return undefined;
event.result = undefined;
event.target = elem;
data = jQuery.makeArray(data);
data.unshift( event );
}

event.currentTarget = elem;
var handle = jQuery.data(elem, "handle");
if ( handle )
handle.apply( elem, data );

if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
event.result = false;

if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
this.triggered = true;
try {
elem[ type ]();
} catch (e) {}
}

this.triggered = false;

if ( !event.isPropagationStopped() ) {
var parent = elem.parentNode || elem.ownerDocument;
if ( parent )
jQuery.event.trigger(event, data, parent, true);
}
},

handle: function(event) {
var all, handlers;

event = arguments[0] = jQuery.event.fix( event || window.event );

var namespaces = event.type.split(".");
event.type = namespaces.shift();

all = !namespaces.length && !event.exclusive;
var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
handlers = ( jQuery.data(this, "events") || {} )[event.type];
for ( var j in handlers ) {
var handler = handlers[j];
if ( all || namespace.test(handler.type) ) {
event.handler = handler;
event.data = handler.data;

var ret = handler.apply(this, arguments);

if( ret !== undefined ){
event.result = ret;
if ( ret === false ) {
event.preventDefault();
event.stopPropagation();
}
}

if( event.isImmediatePropagationStopped() )
break;

}
}
},

props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),

fix: function(event) {
if ( event[expando] )
return event;
var originalEvent = event;
event = jQuery.Event( originalEvent );

for ( var i = this.props.length, prop; i; ){
prop = this.props[ --i ];
event[ prop ] = originalEvent[ prop ];
}

if ( !event.target )
event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either

if ( event.target.nodeType == 3 )
event.target = event.target.parentNode;

if ( !event.relatedTarget && event.fromElement )
event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;

// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
var doc = document.documentElement, body = document.body;
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
}

// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
event.which = event.charCode || event.keyCode;

// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
if ( !event.metaKey && event.ctrlKey )
event.metaKey = event.ctrlKey;

if ( !event.which && event.button )
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));

return event;
},

proxy: function( fn, proxy ){
proxy = proxy || function(){ return fn.apply(this, arguments); };
proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
return proxy;
},

special: {
ready: {
setup: bindReady,
teardown: function() {}
}
},

specialAll: {
live: {
setup: function( selector, namespaces ){
jQuery.event.add( this, namespaces[0], liveHandler );
},
teardown:  function( namespaces ){
if ( namespaces.length ) {
var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");

jQuery.each( (jQuery.data(this, "events").live || {}), function(){
if ( name.test(this.type) )
remove++;
});

if ( remove < 1 )
jQuery.event.remove( this, namespaces[0], liveHandler );
}
}
}
}
};

jQuery.Event = function( src ){
// Allow instantiation without the 'new' keyword
if( !this.preventDefault )
return new jQuery.Event(src);

// Event object
if( src && src.type ){
this.originalEvent = src;
this.type = src.type;
// Event type
}else
this.type = src;

this.timeStamp = now();

this[expando] = true;
};

function returnFalse(){
return false;
}
function returnTrue(){
return true;
}
jQuery.Event.prototype = {
preventDefault: function() {
this.isDefaultPrevented = returnTrue;

var e = this.originalEvent;
if( !e )
return;
if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
},
stopPropagation: function() {
this.isPropagationStopped = returnTrue;

var e = this.originalEvent;
if( !e )
return;
if (e.stopPropagation)
e.stopPropagation();
e.cancelBubble = true;
},
stopImmediatePropagation:function(){
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
},
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse
};
var withinElement = function(event) {
var parent = event.relatedTarget;
while ( parent && parent != this )
try { parent = parent.parentNode; }
catch(e) { parent = this; }
if( parent != this ){
event.type = event.data;
jQuery.event.handle.apply( this, arguments );
}
};

jQuery.each({ 
mouseover: 'mouseenter', 
mouseout: 'mouseleave'
}, function( orig, fix ){
jQuery.event.special[ fix ] = {
setup: function(){
jQuery.event.add( this, orig, withinElement, fix );
},
teardown: function(){
jQuery.event.remove( this, orig, withinElement );
}
};			   
});

jQuery.fn.extend({
bind: function( type, data, fn ) {
return type == "unload" ? this.one(type, data, fn) : this.each(function(){
jQuery.event.add( this, type, fn || data, fn && data );
});
},

one: function( type, data, fn ) {
var one = jQuery.event.proxy( fn || data, function(event) {
jQuery(this).unbind(event, one);
return (fn || data).apply( this, arguments );
});
return this.each(function(){
jQuery.event.add( this, type, one, fn && data);
});
},

unbind: function( type, fn ) {
return this.each(function(){
jQuery.event.remove( this, type, fn );
});
},

trigger: function( type, data ) {
return this.each(function(){
jQuery.event.trigger( type, data, this );
});
},

triggerHandler: function( type, data ) {
if( this[0] ){
var event = jQuery.Event(type);
event.preventDefault();
event.stopPropagation();
jQuery.event.trigger( event, data, this[0] );
return event.result;
}		
},

toggle: function( fn ) {
var args = arguments, i = 1;
while( i < args.length )
jQuery.event.proxy( fn, args[i++] );
return this.click( jQuery.event.proxy( fn, function(event) {
this.lastToggle = ( this.lastToggle || 0 ) % i;
event.preventDefault();
return args[ this.lastToggle++ ].apply( this, arguments ) || false;
}));
},

hover: function(fnOver, fnOut) {
return this.mouseenter(fnOver).mouseleave(fnOut);
},

ready: function(fn) {
bindReady();
if ( jQuery.isReady )
fn.call( document, jQuery );
else
jQuery.readyList.push( fn );
return this;
},

live: function( type, fn ){
var proxy = jQuery.event.proxy( fn );
proxy.guid += this.selector + type;

jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );

return this;
},

die: function( type, fn ){
jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
return this;
}
});

function liveHandler( event ){
var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
stop = true,
elems = [];

jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
if ( check.test(fn.type) ) {
var elem = jQuery(event.target).closest(fn.data)[0];
if ( elem )
elems.push({ elem: elem, fn: fn });
}
});

jQuery.each(elems, function(){
if ( this.fn.call(this.elem, event, this.fn.data) === false )
stop = false;
});

return stop;
}

function liveConvert(type, selector){
return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
}

jQuery.extend({
isReady: false,
readyList: [],
ready: function() {
if ( !jQuery.isReady ) {
jQuery.isReady = true;
if ( jQuery.readyList ) {
jQuery.each( jQuery.readyList, function(){
this.call( document, jQuery );
});
jQuery.readyList = null;
}
jQuery(document).triggerHandler("ready");
}
}
});

var readyBound = false;

function bindReady(){
if ( readyBound ) return;
readyBound = true;

if ( document.addEventListener ) {
document.addEventListener( "DOMContentLoaded", function(){
document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
jQuery.ready();
}, false );

} else if ( document.attachEvent ) {
document.attachEvent("onreadystatechange", function(){
if ( document.readyState === "complete" ) {
document.detachEvent( "onreadystatechange", arguments.callee );
jQuery.ready();
}
});
if ( document.documentElement.doScroll && typeof window.frameElement === "undefined" ) (function(){
if ( jQuery.isReady ) return;

try {
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
jQuery.ready();
})();
}
jQuery.event.add( window, "load", jQuery.ready );
}

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

jQuery.fn[name] = function(fn){
return fn ? this.bind(name, fn) : this.trigger(name);
};
});

jQuery( window ).bind( 'unload', function(){ 
for ( var id in jQuery.cache )
if ( id != 1 && jQuery.cache[ id ].handle )
jQuery.event.remove( jQuery.cache[ id ].handle.elem );
}); 
(function(){

jQuery.support = {};

var root = document.documentElement,
script = document.createElement("script"),
div = document.createElement("div"),
id = "script" + (new Date).getTime();

div.style.display = "none";
div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';

var all = div.getElementsByTagName("*"),
a = div.getElementsByTagName("a")[0];

// Can't get basic test support
if ( !all || !all.length || !a ) {
return;
}

jQuery.support = {
leadingWhitespace: div.firstChild.nodeType == 3,
tbody: !div.getElementsByTagName("tbody").length,
objectAll: !!div.getElementsByTagName("object")[0]
.getElementsByTagName("*").length,
htmlSerialize: !!div.getElementsByTagName("link").length,
style: /red/.test( a.getAttribute("style") ),
hrefNormalized: a.getAttribute("href") === "/a",
opacity: a.style.opacity === "0.5",
cssFloat: !!a.style.cssFloat,
scriptEval: false,
noCloneEvent: true,
boxModel: null
};

script.type = "text/javascript";
try {
script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
} catch(e){}

root.insertBefore( script, root.firstChild );

if ( window[ id ] ) {
jQuery.support.scriptEval = true;
delete window[ id ];
}

root.removeChild( script );

if ( div.attachEvent && div.fireEvent ) {
div.attachEvent("onclick", function(){
jQuery.support.noCloneEvent = false;
div.detachEvent("onclick", arguments.callee);
});
div.cloneNode(true).fireEvent("onclick");
}

jQuery(function(){
var div = document.createElement("div");
div.style.width = "1px";
div.style.paddingLeft = "1px";

document.body.appendChild( div );
jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
document.body.removeChild( div );
});
})();

var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";

jQuery.props = {
"for": "htmlFor",
"class": "className",
"float": styleFloat,
cssFloat: styleFloat,
styleFloat: styleFloat,
readonly: "readOnly",
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
tabindex: "tabIndex"
};
jQuery.fn.extend({
_load: jQuery.fn.load,

load: function( url, params, callback ) {
if ( typeof url !== "string" )
return this._load( url );

var off = url.indexOf(" ");
if ( off >= 0 ) {
var selector = url.slice(off, url.length);
url = url.slice(0, off);
}

var type = "GET";
if ( params )
if ( jQuery.isFunction( params ) ) {
callback = params;
params = null;

} else if( typeof params === "object" ) {
params = jQuery.param( params );
type = "POST";
}

var self = this;

jQuery.ajax({
url: url,
type: type,
dataType: "html",
data: params,
complete: function(res, status){
if ( status == "success" || status == "notmodified" )
self.html( selector ?
jQuery("<div/>")
.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
.find(selector) :
res.responseText );

if( callback )
self.each( callback, [res.responseText, status, res] );
}
});
return this;
},

serialize: function() {
return jQuery.param(this.serializeArray());
},
serializeArray: function() {
return this.map(function(){
return this.elements ? jQuery.makeArray(this.elements) : this;
})
.filter(function(){
return this.name && !this.disabled &&
(this.checked || /select|textarea/i.test(this.nodeName) ||
/text|hidden|password/i.test(this.type));
})
.map(function(i, elem){
var val = jQuery(this).val();
return val == null ? null :
jQuery.isArray(val) ?
jQuery.map( val, function(val, i){
return {name: elem.name, value: val};
}) :
{name: elem.name, value: val};
}).get();
}
});

jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
jQuery.fn[o] = function(f){
return this.bind(o, f);
};
});

var jsc = now();

jQuery.extend({

get: function( url, data, callback, type ) {
if ( jQuery.isFunction( data ) ) {
callback = data;
data = null;
}

return jQuery.ajax({
type: "GET",
url: url,
data: data,
success: callback,
dataType: type
});
},

getScript: function( url, callback ) {
return jQuery.get(url, null, callback, "script");
},

getJSON: function( url, data, callback ) {
return jQuery.get(url, data, callback, "json");
},

post: function( url, data, callback, type ) {
if ( jQuery.isFunction( data ) ) {
callback = data;
data = {};
}

return jQuery.ajax({
type: "POST",
url: url,
data: data,
success: callback,
dataType: type
});
},

ajaxSetup: function( settings ) {
jQuery.extend( jQuery.ajaxSettings, settings );
},

ajaxSettings: {
url: location.href,
global: true,
type: "GET",
contentType: "application/x-www-form-urlencoded",
processData: true,
async: true,
xhr:function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
},
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
script: "text/javascript, application/javascript",
json: "application/json, text/javascript",
text: "text/plain",
_default: "*/*"
}
},

lastModified: {},

ajax: function( s ) {
s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));

var jsonp, jsre = /=\?(&|$)/g, status, data,
type = s.type.toUpperCase();

if ( s.data && s.processData && typeof s.data !== "string" )
s.data = jQuery.param(s.data);
if ( s.dataType == "jsonp" ) {
if ( type == "GET" ) {
if ( !s.url.match(jsre) )
s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
} else if ( !s.data || !s.data.match(jsre) )
s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
s.dataType = "json";
}

if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
jsonp = "jsonp" + jsc++;

if ( s.data )
s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
s.url = s.url.replace(jsre, "=" + jsonp + "$1");

s.dataType = "script";

window[ jsonp ] = function(tmp){
data = tmp;
success();
complete();
// Garbage collect
window[ jsonp ] = undefined;
try{ delete window[ jsonp ]; } catch(e){}
if ( head )
head.removeChild( script );
};
}

if ( s.dataType == "script" && s.cache == null )
s.cache = false;

if ( s.cache === false && type == "GET" ) {
var ts = now();
var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
}

if ( s.data && type == "GET" ) {
s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;

s.data = null;
}

if ( s.global && ! jQuery.active++ )
jQuery.event.trigger( "ajaxStart" );

var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );

if ( s.dataType == "script" && type == "GET" && parts
&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){

var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = s.url;
if (s.scriptCharset)
script.charset = s.scriptCharset;

// Handle Script loading
if ( !jsonp ) {
var done = false;

// Attach handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
success();
complete();
head.removeChild( script );
}
};
}

head.appendChild(script);

// We handle everything using the script element injection
return undefined;
}

var requestDone = false;

// Create the request object
var xhr = s.xhr();

if( s.username )
xhr.open(type, s.url, s.async, s.username, s.password);
else
xhr.open(type, s.url, s.async);

try {
if ( s.data )
xhr.setRequestHeader("Content-Type", s.contentType);

if ( s.ifModified )
xhr.setRequestHeader("If-Modified-Since",
jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
s.accepts[ s.dataType ] + ", */*" :
s.accepts._default );
} catch(e){}

if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
xhr.abort();
return false;
}

if ( s.global )
jQuery.event.trigger("ajaxSend", [xhr, s]);
var onreadystatechange = function(isTimeout){
if (xhr.readyState == 0) {
if (ival) {
clearInterval(ival);
ival = null;
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
}
} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
requestDone = true;
if (ival) {
clearInterval(ival);
ival = null;
}

status = isTimeout == "timeout" ? "timeout" :
!jQuery.httpSuccess( xhr ) ? "error" :
s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
"success";

if ( status == "success" ) {
try {
data = jQuery.httpData( xhr, s.dataType, s );
} catch(e) {
status = "parsererror";
}
}
if ( status == "success" ) {
var modRes;
try {
modRes = xhr.getResponseHeader("Last-Modified");
} catch(e) {} // swallow exception thrown by FF if header is not available

if ( s.ifModified && modRes )
jQuery.lastModified[s.url] = modRes;

if ( !jsonp )
success();
} else
jQuery.handleError(s, xhr, status);

complete();

if ( isTimeout )
xhr.abort();

// Stop memory leaks
if ( s.async )
xhr = null;
}
};

if ( s.async ) {
var ival = setInterval(onreadystatechange, 13);
if ( s.timeout > 0 )
setTimeout(function(){
if ( xhr && !requestDone )
onreadystatechange( "timeout" );
}, s.timeout);
}
try {
xhr.send(s.data);
} catch(e) {
jQuery.handleError(s, xhr, null, e);
}
if ( !s.async )
onreadystatechange();

function success(){
if ( s.success )
s.success( data, status );
if ( s.global )
jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
}

function complete(){
if ( s.complete )
s.complete(xhr, status);
if ( s.global )
jQuery.event.trigger( "ajaxComplete", [xhr, s] );
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
}
return xhr;
},

handleError: function( s, xhr, status, e ) {
if ( s.error ) s.error( xhr, status, e );

if ( s.global )
jQuery.event.trigger( "ajaxError", [xhr, s, e] );
},
active: 0,
httpSuccess: function( xhr ) {
try {
return !xhr.status && location.protocol == "file:" ||
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
} catch(e){}
return false;
},

httpNotModified: function( xhr, url ) {
try {
var xhrRes = xhr.getResponseHeader("Last-Modified");

return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
} catch(e){}
return false;
},

httpData: function( xhr, type, s ) {
var ct = xhr.getResponseHeader("content-type"),
xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;

if ( xml && data.documentElement.tagName == "parsererror" )
throw "parsererror";

if( s && s.dataFilter )
data = s.dataFilter( data, type );
if( typeof data === "string" ){

if ( type == "script" )
jQuery.globalEval( data );
if ( type == "json" )
data = window["eval"]("(" + data + ")");
}

return data;
},

param: function( a ) {
var s = [ ];

function add( key, value ){
s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
};

if ( jQuery.isArray(a) || a.jquery )
jQuery.each( a, function(){
add( this.name, this.value );
});

else
for ( var j in a )
if ( jQuery.isArray(a[j]) )
jQuery.each( a[j], function(){
add( j, this );
});
else
add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );

return s.join("&").replace(/%20/g, "+");
}

});
var elemdisplay = {},
timerId,
fxAttrs = [
[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
[ "opacity" ]
];

function genFx( type, num ){
var obj = {};
jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
obj[ this ] = type;
});
return obj;
}

jQuery.fn.extend({
show: function(speed,callback){
if ( speed ) {
return this.animate( genFx("show", 3), speed, callback);
} else {
for ( var i = 0, l = this.length; i < l; i++ ){
var old = jQuery.data(this[i], "olddisplay");

this[i].style.display = old || "";

if ( jQuery.css(this[i], "display") === "none" ) {
var tagName = this[i].tagName, display;

if ( elemdisplay[ tagName ] ) {
display = elemdisplay[ tagName ];
} else {
var elem = jQuery("<" + tagName + " />").appendTo("body");

display = elem.css("display");
if ( display === "none" )
display = "block";

elem.remove();

elemdisplay[ tagName ] = display;
}

this[i].style.display = jQuery.data(this[i], "olddisplay", display);
}
}

return this;
}
},

hide: function(speed,callback){
if ( speed ) {
return this.animate( genFx("hide", 3), speed, callback);
} else {
for ( var i = 0, l = this.length; i < l; i++ ){
var old = jQuery.data(this[i], "olddisplay");
if ( !old && old !== "none" )
jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
this[i].style.display = "none";
}
return this;
}
},
_toggle: jQuery.fn.toggle,

toggle: function( fn, fn2 ){
var bool = typeof fn === "boolean";

return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
this._toggle.apply( this, arguments ) :
fn == null || bool ?
this.each(function(){
var state = bool ? fn : jQuery(this).is(":hidden");
jQuery(this)[ state ? "show" : "hide" ]();
}) :
this.animate(genFx("toggle", 3), fn, fn2);
},

fadeTo: function(speed,to,callback){
return this.animate({opacity: to}, speed, callback);
},

animate: function( prop, speed, easing, callback ) {
var optall = jQuery.speed(speed, easing, callback);

return this[ optall.queue === false ? "each" : "queue" ](function(){

var opt = jQuery.extend({}, optall), p,
hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
self = this;

for ( p in prop ) {
if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
return opt.complete.call(this);

if ( ( p == "height" || p == "width" ) && this.style ) {
// Store display property
opt.display = jQuery.css(this, "display");

// Make sure that nothing sneaks out
opt.overflow = this.style.overflow;
}
}

if ( opt.overflow != null )
this.style.overflow = "hidden";

opt.curAnim = jQuery.extend({}, prop);

jQuery.each( prop, function(name, val){
var e = new jQuery.fx( self, opt, name );

if ( /toggle|show|hide/.test(val) )
e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
else {
var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
start = e.cur(true) || 0;

if ( parts ) {
var end = parseFloat(parts[2]),
unit = parts[3] || "px";

// We need to compute starting value
if ( unit != "px" ) {
self.style[ name ] = (end || 1) + unit;
start = ((end || 1) / e.cur(true)) * start;
self.style[ name ] = start + unit;
}

// If a +=/-= token was provided, we're doing a relative animation
if ( parts[1] )
end = ((parts[1] == "-=" ? -1 : 1) * end) + start;

e.custom( start, end, unit );
} else
e.custom( start, val, "" );
}
});

// For JS strict compliance
return true;
});
},

stop: function(clearQueue, gotoEnd){
var timers = jQuery.timers;

if (clearQueue)
this.queue([]);

this.each(function(){
for ( var i = timers.length - 1; i >= 0; i-- )
if ( timers[i].elem == this ) {
if (gotoEnd)
timers[i](true);
timers.splice(i, 1);
}
});
if (!gotoEnd)
this.dequeue();

return this;
}

});
jQuery.each({
slideDown: genFx("show", 1),
slideUp: genFx("hide", 1),
slideToggle: genFx("toggle", 1),
fadeIn: { opacity: "show" },
fadeOut: { opacity: "hide" }
}, function( name, props ){
jQuery.fn[ name ] = function( speed, callback ){
return this.animate( props, speed, callback );
};
});

jQuery.extend({

speed: function(speed, easing, fn) {
var opt = typeof speed === "object" ? speed : {
complete: fn || !fn && easing ||
jQuery.isFunction( speed ) && speed,
duration: speed,
easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
};

opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;

// Queueing
opt.old = opt.complete;
opt.complete = function(){
if ( opt.queue !== false )
jQuery(this).dequeue();
if ( jQuery.isFunction( opt.old ) )
opt.old.call( this );
};

return opt;
},

easing: {
linear: function( p, n, firstNum, diff ) {
return firstNum + diff * p;
},
swing: function( p, n, firstNum, diff ) {
return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
}
},

timers: [],

fx: function( elem, options, prop ){
this.options = options;
this.elem = elem;
this.prop = prop;

if ( !options.orig )
options.orig = {};
}

});

jQuery.fx.prototype = {

// Simple function for setting a style value
update: function(){
if ( this.options.step )
this.options.step.call( this.elem, this.now, this );

(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );

// Set display property to block for height/width animations
if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
this.elem.style.display = "block";
},

// Get the current size
cur: function(force){
if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
return this.elem[ this.prop ];

var r = parseFloat(jQuery.css(this.elem, this.prop, force));
return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
},

// Start an animation from one number to another
custom: function(from, to, unit){
this.startTime = now();
this.start = from;
this.end = to;
this.unit = unit || this.unit || "px";
this.now = this.start;
this.pos = this.state = 0;

var self = this;
function t(gotoEnd){
return self.step(gotoEnd);
}

t.elem = this.elem;

if ( t() && jQuery.timers.push(t) == 1 ) {
timerId = setInterval(function(){
var timers = jQuery.timers;

for ( var i = 0; i < timers.length; i++ )
if ( !timers[i]() )
timers.splice(i--, 1);

if ( !timers.length ) {
clearInterval( timerId );
}
}, 13);
}
},
show: function(){
this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
this.options.show = true;
this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
jQuery(this.elem).show();
},
hide: function(){
this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
this.options.hide = true;
this.custom(this.cur(), 0);
},
step: function(gotoEnd){
var t = now();
if ( gotoEnd || t >= this.options.duration + this.startTime ) {
this.now = this.end;
this.pos = this.state = 1;
this.update();

this.options.curAnim[ this.prop ] = true;

var done = true;
for ( var i in this.options.curAnim )
if ( this.options.curAnim[i] !== true )
done = false;

if ( done ) {
if ( this.options.display != null ) {
this.elem.style.overflow = this.options.overflow;
this.elem.style.display = this.options.display;
if ( jQuery.css(this.elem, "display") == "none" )
this.elem.style.display = "block";
}
if ( this.options.hide )
jQuery(this.elem).hide();
if ( this.options.hide || this.options.show )
for ( var p in this.options.curAnim )
jQuery.attr(this.elem.style, p, this.options.orig[p]);
this.options.complete.call( this.elem );
}

return false;
} else {
var n = t - this.startTime;
this.state = n / this.options.duration;
this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
this.now = this.start + ((this.end - this.start) * this.pos);
this.update();
}

return true;
}

};

jQuery.extend( jQuery.fx, {
speeds:{
slow: 600,
fast: 200,
// Default speed
_default: 400
},
step: {

opacity: function(fx){
jQuery.attr(fx.elem.style, "opacity", fx.now);
},

_default: function(fx){
if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
fx.elem.style[ fx.prop ] = fx.now + fx.unit;
else
fx.elem[ fx.prop ] = fx.now;
}
}
});
if ( document.documentElement["getBoundingClientRect"] )
jQuery.fn.offset = function() {
if ( !this[0] ) return { top: 0, left: 0 };
if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
return { top: top, left: left };
};
else 
jQuery.fn.offset = function() {
if ( !this[0] ) return { top: 0, left: 0 };
if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
jQuery.offset.initialized || jQuery.offset.initialize();

var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
body = doc.body, defaultView = doc.defaultView,
prevComputedStyle = defaultView.getComputedStyle(elem, null),
top = elem.offsetTop, left = elem.offsetLeft;

while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
computedStyle = defaultView.getComputedStyle(elem, null);
top -= elem.scrollTop, left -= elem.scrollLeft;
if ( elem === offsetParent ) {
top += elem.offsetTop, left += elem.offsetLeft;
if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
}
if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
prevComputedStyle = computedStyle;
}

if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
top  += body.offsetTop,
left += body.offsetLeft;

if ( prevComputedStyle.position === "fixed" )
top  += Math.max(docElem.scrollTop, body.scrollTop),
left += Math.max(docElem.scrollLeft, body.scrollLeft);

return { top: top, left: left };
};

jQuery.offset = {
initialize: function() {
if ( this.initialized ) return;
var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';

rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
for ( prop in rules ) container.style[prop] = rules[prop];

container.innerHTML = html;
body.insertBefore(container, body.firstChild);
innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;

this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
this.doesAddBorderForTableAndCells = (td.offsetTop === 5);

innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);

body.style.marginTop = '1px';
this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
body.style.marginTop = bodyMarginTop;

body.removeChild(container);
this.initialized = true;
},

bodyOffset: function(body) {
jQuery.offset.initialized || jQuery.offset.initialize();
var top = body.offsetTop, left = body.offsetLeft;
if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
return { top: top, left: left };
}
};


jQuery.fn.extend({
position: function() {
var left = 0, top = 0, results;

if ( this[0] ) {
var offsetParent = this.offsetParent(),
offset       = this.offset(),
parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
offset.top  -= num( this, 'marginTop'  );
offset.left -= num( this, 'marginLeft' );
parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
parentOffset.left += num( offsetParent, 'borderLeftWidth' );
results = {
top:  offset.top  - parentOffset.top,
left: offset.left - parentOffset.left
};
}

return results;
},

offsetParent: function() {
var offsetParent = this[0].offsetParent || document.body;
while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
offsetParent = offsetParent.offsetParent;
return jQuery(offsetParent);
}
});
jQuery.each( ['Left', 'Top'], function(i, name) {
var method = 'scroll' + name;

jQuery.fn[ method ] = function(val) {
if (!this[0]) return null;

return val !== undefined ?
this.each(function() {
this == window || this == document ?
window.scrollTo(
!i ? val : jQuery(window).scrollLeft(),
i ? val : jQuery(window).scrollTop()
) :
this[ method ] = val;
}) :
this[0] == window || this[0] == document ?
self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
jQuery.boxModel && document.documentElement[ method ] ||
document.body[ method ] :
this[0][ method ];
};
});
jQuery.each([ "Height", "Width" ], function(i, name){

var tl = i ? "Left"  : "Top",  // top or left
br = i ? "Right" : "Bottom"; // bottom or right
jQuery.fn["inner" + name] = function(){
return this[ name.toLowerCase() ]() +
num(this, "padding" + tl) +
num(this, "padding" + br);
};
jQuery.fn["outer" + name] = function(margin) {
return this["inner" + name]() +
num(this, "border" + tl + "Width") +
num(this, "border" + br + "Width") +
(margin ?
num(this, "margin" + tl) + num(this, "margin" + br) : 0);
};

var type = name.toLowerCase();

jQuery.fn[ type ] = function( size ) {
return this[0] == window ?
document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
document.body[ "client" + name ] :
this[0] == document ?
Math.max(
document.documentElement["client" + name],
document.body["scroll" + name], document.documentElement["scroll" + name],
document.body["offset" + name], document.documentElement["offset" + name]
) :
size === undefined ?
(this.length ? jQuery.css( this[0], type ) : null) :

this.css( type, typeof size === "string" ? size : size + "px" );
};

});})();

var $j = jQuery.noConflict();
var showDateTime = '';
var strHost=location.host;
$j(document).ready(
function() {
function bindHideImageEvents(){
var path=+strHost+"/slide-button-active.gif";
$j('img[@id=sideBarTab].slideHide').unbind('click');
$j('img[@id=sideBarTab].slideHide').click(function () {
$j('#sideBar').fadeIn();
$j('#sideBarContents').animate({width:"300px"});
$j('img#sideBarTab').attr("src","http://thecityguide.in/images/slide-button-active.gif");
$j('#sideBarContents').slideDown("slow");
$j('#sideBarTab').removeClass('slideHide');
$j('#sideBarTab').addClass('slideShow');
bindImageEvent();
});
}
function bindImageEvent(){
$j('img[@id=sideBarTab].slideShow').unbind('click');
$j('img[@id=sideBarTab].slideShow').click(function () {
$j('sideBarTab').fadeOut();
$j('#sideBarContents').animate({width:"0px"});
$j('img#sideBarTab').attr("src","http://thecityguide.in/images/slide-button.gif");
$j('#sideBarContents').slideUp("slow");
$j('#sideBarTab').removeClass('slideShow');
$j('#sideBarTab').addClass('slideHide');
bindHideImageEvents();
});
}
bindHideImageEvents();
$j('#selectcinema').change(
function() {
$j('#selectmovie').html('<option>loading....</option>');
$j('#selectdate').html('<option>Select Date:</option>');
$j('#selecttime').html('<option>Select Time:</option>');
$j('#selectprice').html('<option>Select Price:</option>');
$j.ajax({
type: "POST",
url: "web/ajax/get_films_by_cinema.php",
data: "cinema_id="+$j(this).val(),
success: function(msg){
$j('#selectmovie').html(msg);
}
});
}
);
$j('#selectmovie').change(
function() {
get_date_of_movie($j(this).val(), $j('#selectcinema').val());
}
);
$j('#selectdate').change(
function () {
$j('#selecttime').html('<option>loading....</option>');
$j('#selectprice').html('<option>Select Price:</option>');

$j.ajax({
type: "POST",
url: "web/ajax/get_time_of_movie.php",
data: "film_id="+$j('#selectmovie').val()+"&cinema_id="+$j('#selectcinema').val()+"&date="+$j(this).val(),
success: function(responseData) {
$j('#selecttime').html(responseData);
}
});
}
);
$j('#selecttime').change(
function() {
$j('#selectprice').html('<option>loading....</option>');
$j.ajax({
type: "POST",
url: "web/ajax/get_price_of_movie.php",
data: "session_id="+$j(this).val()+"&cinema_id="+$j('#selectcinema').val(),
success: function(responseData) {
$j('#selectprice').html(responseData);
}
});
}
);
$j('#selectcinema_booking').change(
function() {
$j('#selectcinema').val($j(this).val());
get_date_of_movie($j('#selectmovie').val(), $j(this).val());
}
);
//     var scroll_amount = '';
$j('#marquee_speed').hover(
function() {
this.stop();
},
function() {
this.start();
}
);
$j('#marquee_speed_up').click (
function() {
$j('#marquee_speed').attr('scrollAmount', $j('#marquee_speed').attr('scrollAmount') + 1);
}
)
$j('#marquee_speed_down').click (
function() {
$j('#marquee_speed').attr('scrollAmount', $j('#marquee_speed').attr('scrollAmount') - 1);
}
)
$j('#open_login_detail').click (
function() {
var result = $j('#login_detail').css("display");
if (result == 'block') {
$j("#open_login_detail").html("<img src='images/plus.gif' style='cursor:pointer'>");
$j("#login_detail").slideUp("slow");
// $j('#login_detail').css({ display:"none" });
} else {
$j("#open_login_detail").html("<img src='images/minus.gif' style='cursor:pointer'>");
$j("#login_detail").slideDown("slow");
// $j('#login_detail').css({ display:"block" });
}
}
)
$j('#term_and_conditions_signature').click (
function() {
var term_and_conditions_signature = document.getElementById('term_and_conditions_signature').checked;
if(!term_and_conditions_signature) {
document.signature_booking.signature_city.disabled=true;
} else {
document.signature_booking.signature_city.disabled=false;
}
}
)
$j('#select_region').change(
function () {
$j('#selectcinema').html('<option>loading....</option>');
$j.ajax({
type: "POST",
url: "web/ajax/get_cinemas_by_region.php",
data: "region_id="+$j(this).val(),
success: function(cinemas){
$j('#selectcinema').html(cinemas);
}
});
}
)

$j('#show_thickbox_ad').click();
$j('#show_logout_thickbox').click();
}
);

function get_date_of_movie(arg1, arg2) {
$j('#selectdate').html('<option>loading....</option>');
$j('#selecttime').html('<option>Select Time:</option>');
$j('#selectprice').html('<option>Select Price:</option>');

$j.ajax({
type: "POST",
url: "web/ajax/get_date_of_movie.php",
data: "film_id="+arg1+"&cinema_id="+arg2,
success: function(responseData) {
$j('#selectdate').html(responseData);
}
});
}

var menuwidth=455;
var scrollspeed=9;
var loadedyes=0;

function moveleft() {
if (loadedyes) {
if ( parseInt(cross_scroll.style.left)>(menuwidth-actualwidth) ) {
cross_scroll.style.left=parseInt(cross_scroll.style.left)-scrollspeed+"px"
}
}

lefttime = setTimeout(function(){ moveleft() },50);
}

function moveright() {
if (loadedyes) {
if ( parseInt(cross_scroll.style.left)<0 )
cross_scroll.style.left=parseInt(cross_scroll.style.left)+scrollspeed+"px"
}
righttime = setTimeout(function(){ moveright() },50);
}

var actualwidth1 = 0;
function fillup() {
cross_scroll = document.getElementById('featured');
actualwidth = actualwidth1;
loadedyes=1;
}

function goto(url, arg) {
url = REDIRECT_URL+url;
window.open(url, arg);
}

function show_details(film_code) {
$j.ajax({
type: "POST",
url: "web/ajax/get_film_by_code.php",
data: "film_code="+film_code,
success: function(msg){
$j('#details').html(msg);
location.hash = '#details';
}
});
}

function findPosX(obj) {
var curleft = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
while (obj = obj.offsetParent) { curleft += obj.offsetLeft }
}
return curleft;
}

function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
curtop = obj.offsetTop
while (obj = obj.offsetParent) { curtop += obj.offsetTop }
}
return curtop;
}

function show_schedule_dates(id_position, id_show) {
posX = findPosX(document.getElementById(id_position));
posY = findPosY(document.getElementById(id_position));
document.getElementById(id_show).style.top = (posY+20)+'px';
document.getElementById(id_show).style.left = (posX-80)+'px';
if(document.getElementById('schedule_dates').style.display == 'none') {
document.getElementById('schedule_dates').style.display = 'block';
} else {
document.getElementById('schedule_dates').style.display = 'none';
}
}

function change_schedule(date_str, day) {
document.getElementById('schedule_dates').style.display = 'none';
var imgLoad=strHost+"/images/loadingAnimation.gif";
var loader = '<div style="color:#fff;padding-left:200px;"><img src="'+img+'" alt="Loading....."></div>';
$j('#schedule').html(loader);

$j('#show_date_span').html(date_str);
$j.ajax({
type: "POST",
url: "web/ajax/get_schedule.php",
data: "date_str="+date_str+'&day='+day,
success: function(msg){
$j('#schedule').html(msg);
}
});
}

function check_login_form() {
var email = document.getElementById('email').value; 
if(email.length == 0) { 
alert('Login field cannot be left blank.');
return false;
}

if(!isValidEmail(email, '')) {
return false;
}

var password = document.getElementById('password').value;

if(password.length == 0) {
alert('Password field cannot be left blank.');
return false;
}
}

function isValidEmail(email, field_name) {
if (! allValidChars(email)) {  // check to make sure all characters are valid
alert('Invalid '+field_name+' email id.');
return false;
}
if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
alert('Invalid '+field_name+' email id.');
return false;
} else if (email.lastIndexOf(".") <= email.indexOf("@")) {
alert('Invalid '+field_name+' email id.');
return false;
} else if (email.indexOf("@") == email.length) {
alert('Invalid '+field_name+' email id.');
return false;
} else if (email.indexOf("..") >=0) { // two periods in a row is not valid
alert('Invalid '+field_name+' email id.');
return false;
} else if (email.indexOf(".") == email.length) {  // . must not be the last character
alert('Invalid '+field_name+' email id.');
return false;
}
return true;
}

function allValidChars(email) {
var parsed = true;
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
for (var i=0; i < email.length; i++) {
var letter = email.charAt(i).toLowerCase();
if (validchars.indexOf(letter) != -1)
continue;
parsed = false;
break;
}
return parsed;
}

function check_registration_form() {
var email = document.getElementById('email').value; 
if(email.length == 0) { 
alert('Email cannot be left blank.');
return false;
}

if(!isValidEmail(email, '')) {
return false;
}

var password = document.getElementById('password').value;
if(password.length == 0) {
alert('Password cannot be left blank.');
return false;
}

if(password.length < 6) {
alert('Password must be atleast 6 characters long.');
return false;
}

var confirm_password = document.getElementById('confirm_password').value;
if(confirm_password.length == 0) {
alert('Confirm password cannot be left blank.');
return false;
}
if(confirm_password != password) {
alert('Password and confirm password mismatch.');
return false;
}

var question = document.getElementById('question');
if(question.value == '0') {
alert('Select any question.');
return false;
}
var answer = document.getElementById('answer');
if(question.value != '0' && answer.value == '') {
alert('Answer the selected question.');
return false;
}

var alt_email = document.getElementById('alt_email').value;
if(alt_email.length == 0) {
alert('Alternate email id cannot be blank.');
return false;
}
if(!isValidEmail(alt_email, 'Alternate')) {
return false;
}
if(alt_email == email) {
alert('Alternate email id should be different from first email id');
return false;
}

var first_name = document.getElementById('first_name').value;
if(first_name.length == 0) {
alert('First name cannot be blank');
return false;
}
var last_name = document.getElementById('last_name').value;
if(last_name.length == 0) {
alert('Last name cannot be blank');
return false;
}
var gender_male = document.getElementById('gender_male').checked;
var gender_female = document.getElementById('gender_female').checked;
if ( (!gender_male ) && (!gender_female) ) {
alert('Gender cannot be blank');
return false;
}

var city = document.getElementById('city').value;
if(city == '0') {
alert('Select any city.');
return false;
}

var phone = document.getElementById('phone').value;
if(phone.length != 0) {
if(!IsNumeric(phone)) {
alert('Phone No. invalid.');
return false;
}
if( (phone.length < 10) || (phone.length > 15) ) {
alert('Phone No. should be 10/15 digits long.');
return false;
}
}

var mobile = document.getElementById('mobile').value;
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. length should be 10 digits.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}
if(document.getElementById('captcha').value == "") {
alert("Please enter captcha ");
document.getElementById('captcha').focus();
return false;
}
var terms = document.getElementById('terms');
if(!terms.checked) {
alert('Accept the terms and conditions.');
return false;
}

}

function IsValidName(sText) {
var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var IsCharacter=true;
var Char;

for (i = 0; i < sText.length && IsNumber == true; i++) {
Char = sText.charAt(i); 
if (ValidChars.indexOf(Char) == -1) {
IsCharacter = false;
}
}
return IsCharacter;
}

function IsNumeric(sText) {
var ValidChars = "0123456789";
var IsNumber=true;
var Char;

for (i = 0; i < sText.length && IsNumber == true; i++) {
Char = sText.charAt(i); 
if (ValidChars.indexOf(Char) == -1) {
IsNumber = false;
}
}
return IsNumber;
}

function check_forgot_password() {
var email = document.getElementById('email').value; 
if(email.length == 0) { 
alert('User id/Email cannot be left blank.');
return false;
}

if(!isValidEmail(email)) {
return false;
}

document.forms['forgot_pwd'].submit();
}

function check_blank_field(id, field_name) {
var field = document.getElementById(id).value; 
if(field.length == 0) { 
alert(field_name + ' cannot be left blank.');
return false;
}

document.forms['pwd_recovery'].submit();
}

function check_password() {
var field = document.getElementById('current_password').value; 
if(field.length == 0) {
alert('Current password cannot be left blank.');
return false;
}

var new_pass = document.getElementById('new_password').value; 
if(new_pass.length == 0) {
alert('New password cannot be left blank.');
return false;
}
if(new_pass.length < 6) {
alert('New password must be atleast 6 characters long.');
return false;
}

var conf_pass = document.getElementById('confirm_password').value; 
if(conf_pass.length == 0) {
alert('Confirm password cannot be left blank.');
return false;
}
if(new_pass != conf_pass) {
alert('New and confirm password mismatch.');
return false;
}
document.forms['change_pwd'].submit();
}

var whitespace = " \t\n\r";
function isWhitespace (s) {
var i;
if (isEmpty(s)) return true;
for (i = 0; i < s.length; i++) {
var c = s.charAt(i);
if (whitespace.indexOf(c) == -1) return false;
}
return true;
}

function isEmpty(s) {
return ((s == null) || (s.length == 0))
}

function check_home_form_value() {
// Region check for internal ticket booking.
if(document.getElementById('select_region')) {
var region_id = document.getElementById('select_region').value;
if(isWhitespace(region_id)) {
alert('oops you skip the REGION field');
return false;
}
}

var cinema_id = document.getElementById('selectcinema').value;
if(isWhitespace(cinema_id)) {
alert('oops you skip the CINEMA field');
return false;
}
var film_id = document.getElementById('selectmovie').value;
if(isWhitespace(film_id)) {
alert('oops you skip the MOVIE field');
return false;
}

var time_id = document.getElementById('selectdate').value;
if(isWhitespace(time_id)) {
alert('oops you skip the DATE field');
return false;
}

var price_id = document.getElementById('selecttime').value;
if(isWhitespace(price_id)) {
alert('oops you skip the TIME field');
return false;
}


var quantitie_id = document.getElementById('selectprice').value;
if(isWhitespace(quantitie_id)) {
alert('oops you skip the PRICE field');
return false;
}

var seats = document.getElementById('selectseat').value;
if(isWhitespace(seats)) {
alert('oops you skip the SEATS field');
return false;
}
return true;
}

function check_edit_profile() {
var email = document.getElementById('email').value;
var alt_email = document.getElementById('alt_email').value;
if(alt_email.length == 0) {
alert('Alternate email id cannot be blank.');
return false;
}
if(!isValidEmail(alt_email, 'Alternate')) {
return false;
}
if(alt_email == email) {
alert('Alternate email id should be different from first email id');
return false;
}

var first_name = document.getElementById('first_name').value;
if(first_name.length == 0) {
alert('First name cannot be blank');
return false;
}

var last_name = document.getElementById('last_name').value;
if(last_name.length == 0) {
alert('Last name cannot be blank');
return false;
}

var gender_male = document.getElementById('gender_male').checked;
var gender_female = document.getElementById('gender_female').checked;
if ( (!gender_male ) && (!gender_female) ) {
alert('Gender cannot be blank');
return false;
}

var city = document.getElementById('city').value;
if(city == '0') {
alert('Select any city.');
return false;
}

var phone = document.getElementById('phone').value;
if(phone.length != 0) {
if(!IsNumeric(phone)) {
alert('Phone No. invalid.');
return false;
}
if( (phone.length < 10) || (phone.length > 15) ) {
alert('Phone No. should be 10/15 digits long.');
return false;
}
}

var mobile = document.getElementById('mobile').value;
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. should be 10 digits long.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}



}

function submit_payment_info() {

var cardno = document.getElementById('cardno').value;
if(cardno.length != 16) {
alert('Invalid card no');
return false;
}

if(!IsNumeric(cardno)) {
alert('Invalid card no, it should be numeric');
return false;
}

var cardtype = document.getElementById('cardtype').value;

var month = document.getElementById('expirymonth').value;
var year = document.getElementById('expiryyear').value;

if(month == '' || month == null) {
alert('Enter expiry month.');
return false;
}

if(year == '' || year == null) {
alert('Enter expiry year.');
return false;
}

var month_year = month+year;
document.getElementById('expirydate').value = month_year;

var cvv = document.getElementById('cvv').value;
if(cvv.length != 3) {
alert('Invalid cvv');
return false;
}

if(!IsNumeric(cvv)) {
alert('Invalid cvv, it should be numeric');
return false;
}

var name_on_card = document.getElementById('name_on_card').value;
if( isWhitespace(name_on_card) ) {
alert('oops you skip the name field');
return false;
}

var mobile = document.getElementById('mobile').value;
if(mobile.length != 10) {
alert('incorrect mobile no, it must be 10 digit');
return false;
}

if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}

var term_and_conditions = document.getElementById('term_and_conditions').checked;
if(!term_and_conditions) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}

if(document.getElementById('tata_aig')) {
if(document.getElementById('tata_aig').checked) {
var extra_parms = '&tata=true';
} else {
var extra_parms = '&tata=false';
}
}
$j.ajax({
type: "POST",
url: "web/ajax/submit_payment_info.php",
data: "year="+month_year+"&cvv="+cvv+"&name_on_card="+name_on_card+"&term_and_conditions="+term_and_conditions+"&cardno="+cardno+"&cardcategory="+cardtype+"&mobile="+mobile+extra_parms,
success: function(responseData) {
document.payment_form.action = 'https://3dsecure.payseal.com/MultiMPI/from_icici_merchant.jsp';
if(responseData) {
return_data = eval("("+responseData+")");
if( return_data['card_offer'] == 'signature' ) {
if( return_data['msg'] == 'success') {
document.payment_form.submit();
} else if( return_data['msg'] ) {
alert(return_data['msg']);
goto('fresh_booking', '_self');
} else {
alert('Some server error occured. Please try again');
goto('signature_booking', '_self');
}
} else if( return_data['card_offer'] =='notsignature' ) {
if(return_data['amount'] && return_data['msg']) {
var amount = return_data['amount'];
var displayAmount = amount+'.00';
var purchaseAmount = amount * 100;
$j('#displayAmount').val(displayAmount);
$j('#purchaseAmount').val(purchaseAmount);
var display_msg = return_data['msg']+' Amount payable: '+return_data['amount'];
if( confirm(display_msg) ) {
document.payment_form.submit();
} else {
goto('fresh_booking', '_self');
}
} else {
document.payment_form.submit();
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
}
});
}

function get_images(type1) {
$j.ajax({
type: "POST",
url: "web/ajax/get_images.php",
data: "type_name="+type1,
success: function(responseData) {
if(type1 == 'now') {
document.getElementById('now_showing_tab1').style.display = 'block';
document.getElementById('now_showing_tab2').style.display = 'none';
document.getElementById('coming_soon_tab1').style.display = 'block';
document.getElementById('coming_soon_tab2').style.display = 'none';
}
if(type1 == 'soon') {
document.getElementById('coming_soon_tab2').style.display = 'block';
document.getElementById('coming_soon_tab1').style.display = 'none';
document.getElementById('now_showing_tab2').style.display = 'block';
document.getElementById('now_showing_tab1').style.display = 'none';
}
$j('#featured').html(responseData);
}
});
}

function show_details_now(film_code, first_time) {
$j.ajax({
type: "POST",
url: "web/ajax/now_showing_info.php",
data: "film_code="+film_code,
success: function(msg) {
$j('#details').html(msg);
if (!first_time) {
location.hash = '#details';
}
}
});
}
function setCookie( name, value, expires, measure, path, domain  ) {
if(!measure) {
var measure = 'days';
}

if(!path) {
var path = '/';
}
if(!domain) {
var domain = '.pvrcinemas.com';
}
var today = new Date();
today.setTime( today.getTime() );
if ( expires ) {
if(measure == 'days') {
expires = expires * 1000 * 60 * 60 * 24;
}
if(measure == 'hours') {
expires = expires * 1000 * 60 * 60;
}
if(measure == 'minutes') {
expires = expires * 1000 * 60;
}
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" );
}

function readCookie(name) {
var cookieValue = "";
var search = name + "=";
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
cookieValue_arr = cookieValue.split('+');
cookieValue = '';
if (cookieValue_arr.length > 0) {
for (i = 0; i < cookieValue_arr.length; i++) { cookieValue += cookieValue_arr[i]+' '; }
}
return cookieValue.replace(/^\s+|\s+$j/g, "");
}

function change_city_cookie(selected_city) {
setCookie('myregion', selected_city, 7);
goto('home', '_self')
}

function display_timer(minutes, seconds) {
if (seconds<=0) {
seconds=59;
minutes-=1;
}
if (minutes<=-1) {
seconds=0 ;
minutes+=1;
alert('Sorry, your session has expired, please start booking process again');
goto('fresh_booking?cancel=fresh', '_self');
return false;
} else {
seconds-=1;
}

if (seconds <= 9) {
var formated_seconds = '0'+seconds;
} else {
var formated_seconds = seconds;
}
document.getElementById('remaining_time').innerHTML = minutes+" : "+formated_seconds;
setTimeout( function(){ display_timer(minutes, seconds) }, 1000);
}
var total_selected_seats = '';
function selectseat(id, quantity) {
var result_arr = total_selected_seats.split(',');
var total_selected_seats_new = '';
var changeseat = false;

if(id == result_arr[0]) {
changeseat = true;
} else {
for(var i=1; i<quantity; i++) {
if(result_arr[i]) {
if(id == result_arr[i]) {
changeseat = true;
} else {
total_selected_seats_new += result_arr[i]+',';
}
}
}
}
if(!changeseat) {
total_selected_seats = total_selected_seats_new+id;
document.getElementById('new_seat_info').value = total_selected_seats;
document.getElementById(id).className = 'current_selection';
document.getElementById(result_arr[0]).className = 'seat_available';
}
}
function change_seat() {
var new_seat_info = document.getElementById('new_seat_info').value
$j('#seat_booking_container').html('<div style="float:left; width:100%; text-align:center; padding:250px 0;"><img src="images/loadingAnimation.gif"></div>');
$j.ajax({
type: "POST",
url: "web/ajax/change_seat.php",
data: "new_seat_info="+new_seat_info,
success: function(responseData) {
return_data = eval("("+responseData+")");
tb_remove();
if(return_data['error_msg']) {
alert(return_data['error_msg']);
return false;
} else if( return_data['seat_details'] ) {
$j('#seat_details').html(return_data['seat_details']);
return false;
} else {
alert('There may be a server problem, please change your seats again');
return false;
}
}
});
}

function get_movie_details(movie) {
var film_code = movie;
if(film_code) {
$j.ajax({
type: "POST",
url: "web/ajax/now_showing_info.php",
data: "film_code="+film_code,
success: function(details) {
$j('#movie_details').html(details);
}
});
} else {
document.getElementById('movie_details').innerHTML = '<span style="font-weight:bold;color:red;padding-left:100px;height:30px;width:200px;">Select a movie to view its details.</span>';
}
}

function post_film_details(film_code, cinema_id, date, session_id, page_name, post_form_to, poster) {
$j.ajax({
type: "POST",
url: "web/ajax/post_film_details.php",
data: "film_code="+film_code+"&cinema_id="+cinema_id+"&date="+date+"&session_id="+session_id+"&page_name="+page_name+"&post_form_to="+post_form_to+"&poster="+poster,
success: function(form_data) {
$j('#post_film_details').html(form_data);
document.film_details_form.submit();
}
});
}



function showCvv() {
window.open(REDIRECT_URL+"what_is_cvv","_blank","toolbar=no,status=no,menubar=no,width=500, height=500");
}

function showTermsandconditions() {
window.open(REDIRECT_URL+"terms_and_conditions","_blank","toolbar=no,status=no,menubar=no, scrollbars=yes,location=no, directories=no, status=no");
}

function get_values_of_signature_boxes(id1, id2, id3) {
var city_name = $j(id1).val();
$j('#'+id3).html($j('#'+id2+city_name).html());
return true;

}
function get_date_of_signature_boxes(event_id, cinema_id, id1, id2) {
var event = $j(event_id).val();
var cinema = $j('#'+cinema_id).val();
$j('#'+id2).html($j('#'+id1+cinema+'_'+event).html());
return true;
}

function get_signature_area_code(id1, id2, id3) {
$j.ajax({
type: "GET",
url: "web/ajax/get_price_of_movie.php",
data: "session_id="+$j(id1).val()+"&cinema_id="+$j('#'+id2).val(),
success: function(responseData) {
showPrice = eval("("+responseData+")");
var priceOptions = '<option value="">Select Comfort</option>';
for (var i in showPrice) {
option_value = showPrice[i]['Price_strCode']+'|'+showPrice[i]['AreaCat_strCode'];
var class_arr = showPrice[i]['Class_strName'].split('('); 
priceOptions += '<option value="'+option_value+'">' + class_arr[0] + '</option>';
}
$j('#'+id3).html(priceOptions);
}
});
return true;
}

function check_signature_form_value() {
var term_and_conditions_signature = document.getElementById('term_and_conditions_signature').checked;
if(!term_and_conditions_signature) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}

var city = document.getElementById('signature_city').value;
if(isWhitespace(city)) {
alert('oops you skip the CITY field');
return false;
}

var cinema_id = document.getElementById('signature_cinema_id').value;
if(isWhitespace(cinema_id)) {
alert('oops you skip the CINEMA field');
return false;
}

var movie = document.getElementById('signature_event_id').value;
if(isWhitespace(movie)) {
alert('oops you skip the MOVIE field');
return false;
}

var date = document.getElementById('signature_date').value;
if(isWhitespace(date)) {
alert('oops you skip the DATE field');
return false;
}

var price = document.getElementById('signature_price').value;
if(isWhitespace(price)) {
alert('oops you skip the COMFORT field');
return false;
}

var seats = document.getElementById('selectseat').value;
if(isWhitespace(seats)) {
alert('oops you skip the SEATS field');
return false;
}
return true;
}

function set_position(id) {
if(document.getElementById('pop_up'+id).style.display == 'none') {
posX = findPosX(document.getElementById(id));
posY = findPosY(document.getElementById(id));
document.getElementById('pop_up'+id).style.top = posY + 20 + 'px';
document.getElementById('pop_up'+id).style.left = posX - 500 + 'px';
document.getElementById('pop_up'+id).style.display = 'block';
} else {
document.getElementById('pop_up'+id).style.display = 'none'; 
}
}

function month_days(days_month, id, year_id) { 
var days = days_month.split('-');
var total_days = days[0];
var month_name = days[1];
if(document.getElementById(year_id).value == '') {
alert('Select year first.');
return false;
}

var year = document.getElementById(year_id).value;
if(checkleapyear(year) && parseInt(total_days) == 28) {
total_days = 29;
}
var days = '<option value="">Select Day</option>';
for(var i = 1; i <= total_days; i++) {
days = days + '<option value='+i+'>'+i+'</option>';
}
document.getElementById(id).innerHTML = days;
}


function checkleapyear(year) {
year = parseInt(year);
if(year%4 == 0) {
if(year%100 != 0) {
return true;
} else {
if(year%400 == 0)
return true;
else
return false;
}
}
return false;
}

function check_transaction_report1(form_name) {

var select_region = document.getElementById('select_region').value; 
var selectcinema = document.getElementById('selectcinema').value;
var selectmovie = document.getElementById('selectmovie').value;
var transaction_type = document.getElementById('transaction_type').value;
var mobile = document.getElementById('mobile').value;
var email_id = document.getElementById('email_id').value;
var booking_id = document.getElementById('booking_id').value;
var exclude_region = document.getElementById('exclude_region').checked; 
var exclude_cinema = document.getElementById('exclude_cinema').checked;
var full_report = document.getElementById('full_report').checked;
var start_day = document.getElementById('select_start_day').value;
var start_month = document.getElementById('select_start_month').value;
var start_year = document.getElementById('select_start_year').value;
var end_day = document.getElementById('select_end_day').value;
var end_month = document.getElementById('select_end_month').value;
var end_year = document.getElementById('select_end_year').value;

if(select_region == '' && selectcinema == '' && selectmovie == '' && (start_year == '' || start_month == ''  || start_day == '') &&  (end_year == '' ||  end_month == '' || end_day == '') && transaction_type == '' && email_id == '' && mobile == '' && booking_id == '' &&  exclude_region == false && full_report == false && exclude_cinema == false) {
alert("Select atleast one criterion for search.");
return false;
}

if((end_day != '') && (end_month != '') && (end_year != '')) {
if((start_day == '') && (start_month == '') && (start_year == '')) {
alert('Select start date first');
return false;
}
}

var email = document.getElementById('email_id').value; 

if((email != '') && !isValidEmail(email, '')) {
return false;
}
}
function check_payment_type(secure_url) {
var payment_type = $j('#payment_type').val();
if(payment_type == 'creditcard') {
document.confirm_booking.action = secure_url+'/pay_payment';
document.confirm_booking.submit();
return true;
} else if(payment_type == 'oxicash') {
document.confirm_booking.action = secure_url+'/pay_payment_oxy';
document.confirm_booking.submit();
return true;
} else if(payment_type == 'ccavenue') {
document.confirm_booking.action = secure_url+'/pay_payment_ccavenue';
document.confirm_booking.submit();
return true;
} else if(payment_type == 'amex') {
document.confirm_booking.action = secure_url+'/pay_payment_amex';
document.confirm_booking.submit();
return true;
} else if(payment_type == 'wallet') {
$j.ajax({
type: "POST",
url: "web/ajax/check_wallet_balance.php",
data: "&wallet=1",
success: function(responseData) {
if(responseData) {
return_data = eval("("+responseData+")");
if( (return_data['wallet_balance'] == 'sufficient') ) {
//Show updated convenience fee and ticket amount message
alert(return_data['total_amount']);
document.confirm_booking.action = secure_url+'/pay_payment_wallet';
document.confirm_booking.submit();
return true;
} else {
if( return_data['wallet_convenience'] == 'default') {
if( return_data['wallet_balance'] == 'no convenience' ) {
document.confirm_booking.action = secure_url+'/pay_payment_wallet';
document.confirm_booking.submit();
return true;
} else {
alert(return_data['wallet_balance']);
return false;
}
} else {
if( return_data['wallet_balance'] == 'balance error') {
alert("Error occured while checking user's wallet balance.Try again or you can use other payment options.");
return false;
} else {
alert(return_data['wallet_balance']);
return false;
}
}
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
}
});
} else {
alert('Please select Payment type');
return false;
}
return false;
}

function submit_edit_admin_form(edit, form_name, key) {
if(edit == 'edit') {
var new_password = document.getElementById('new_password'+key).value;
if(new_password == '') {
alert('Fill the new password.');
return false;
}
var confirm_password = document.getElementById('confirm_password'+key).value;
if(confirm_password == '') {
alert('Fill the confirm password.');
return false;
}
if(new_password != confirm_password) {
alert('New and confirm  password mismatch.');
return false;
}
document.getElementById('edit'+key).value = 'edit';
document.forms[form_name].submit();
}
if(edit == 'delete') {
if(confirm('Do you want to delete this user ?')) {
document.getElementById('edit'+key).value = 'delete';
document.forms[form_name].submit();
} else {
return false;
}
}
return false;
}

function submit_edit_user_form(edit, form_name, key) {
if(edit == 'edit') {
document.getElementById('edit'+key).value = 'edit';
document.forms[form_name].submit();
}
if(edit == 'delete') {
if(confirm('Do you want to delete this user ?')) {
document.getElementById('edit'+key).value = 'delete';
document.forms[form_name].submit();
} else {
return false;
}
}
}

function check_transaction_report(form_name) {
var select_region = document.getElementById('select_region').value; 
var selectcinema = document.getElementById('selectcinema').value;
var selectmovie = document.getElementById('selectmovie').value;
var transaction_type = document.getElementById('transaction_type').value;
var mobile = document.getElementById('mobile').value;
var email_id = document.getElementById('email_id').value;
var booking_id = document.getElementById('booking_id').value;
var exclude_region = document.getElementById('exclude_region').checked; 
var exclude_cinema = document.getElementById('exclude_cinema').checked;
var full_report = document.getElementById('full_report').checked;
var tata_aig = document.getElementById('tata_aig').checked;
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;

if(select_region == '' && selectcinema == '' && selectmovie == '' && start_date == '' &&  end_date == '' && transaction_type == '' && email_id == '' && mobile == '' && booking_id == '' &&  exclude_region == false && full_report == false && exclude_cinema == false && tata_aig == false) {
alert('Select atleast one search criterion.');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date_parts[0].split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];

var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/'); 
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];

var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}

var email = document.getElementById('email_id').value; 
if((email != '') && !isValidEmail(email, '')) {
return false;
}
}

function check_visalimit_report(form_name) {
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;

if( start_date == '' &&  end_date == '' ) {
alert('Select date.');
return false;
}


if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

var regEx = /^(\d){1,2}-(\d){1,2}-(\d){4}$j/;
if(start_date != '') {
if( !(start_date.match(regEx)) ) {
alert('Invalid start date.');
return false;
}
}

if(end_date != '') {
if( !(end_date.match(regEx)) ) {
alert('Invalid end date.');
return false;
}
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date_parts[0].split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];

var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/'); 
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];

var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}
}

function check_site_user_report(form_name) {
var email_id = document.getElementById('email_id').value;
var mobile = document.getElementById('mobile').value;
var user_name = document.getElementById('user_name').value;

if(email_id == '' && mobile == '' && user_name == '') {
alert('Enter atleast one search criterion.');
return false;
}

if((email_id != '') && !isValidEmail(email_id, '')) {
return false;
}

if(!IsNumeric(mobile)) {
alert('Invalid. mobile no. ');
return false;
}
}

function submit_edit_siteuser_form(form_name, key) {
document.getElementById('edit'+key).value = 'password';
document.forms[form_name].submit();
}

function check_person_entry() {
var person_name = document.getElementById('person_name').value;
if(person_name  == '') {
alert('Enter person name.');
return;
}
$j.ajax({
type: "POST",
url: "web/ajax/get_similar_persons.php",
data: "person_name="+person_name,
success: function(result){
msg = result.split('!@#@!');
if(msg[0] == 'similar_persons') {
$j('#similar_persons').html(msg[1]);
document.getElementById('add_person_div').style.display = 'none';
document.getElementById('message').style.display = 'none';
document.getElementById('similar_persons').style.display = 'block';
} else {
document.forms['add_person_form'].submit();
}
}
});
}

function add_new_person() {
document.forms['add_person_form'].submit(); 
}

function skip_person_addition() {
window.location.href = "admin_person_list?add_person=1&msg=skip";
}

function check_promotype_report(form_name) {
var promo_type = document.getElementById('promo_type').value;

var email_id = document.getElementById('email_id').value;
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;

if(promo_type == '') {
alert('Select promotion type');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date_parts[0].split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];

var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/'); 
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];

var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}

var email = document.getElementById('email_id').value; 
if((email != '') && !isValidEmail(email, '')) {
return false;
}
}

function check_genre_form() {
var genre_name = document.getElementById('genre_name').value;
if(genre_name == '' || genre_name == null) {
alert('Genre name cannot be blank.');
return false;
}
}

function check_user_report() {
var user_name = document.getElementById('user_name').value;
var email_id = document.getElementById('email_id').value;
var mobile = document.getElementById('mobile').value;
var city = document.getElementById('city').value;
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;
var male = document.getElementById('male').checked;
var female = document.getElementById('female').checked;

if(user_name == '' && email_id == '' && city == '' && mobile == '' && start_date == '' &&  end_date == '' && male == false && female == false) {
alert('Select atleast one search criterion.');
return false;
}

if((email_id != '') && !isValidEmail(email_id, '')) {
return false;
}

var phone = document.getElementById('mobile').value;
if(phone.length != 0) {
if(!IsNumeric(phone)) {
alert('Mobile No. invalid.');
return false;
}
if( (phone.length < 10) || (phone.length > 11)  ) {
alert('Mobile No. should be 10/11 digits long.');
return false;
}
}

var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date_parts[0].split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];

var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/'); 
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];

var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}
}

function confirm_bin_delete() {
if(confirm('Do you want to delete this bin?')) {
return true;
}
return false;
}

function check_bin_entry () {
var bin_no = document.getElementById('bin_no').value;
if(bin_no == '' || bin_no == null) {
alert('Fill bin number.');
return false;
}
if(bin_no.length != 6) {
alert('Bin number length should be 6 digits long.');
return false;
}
if(!IsNumeric(bin_no)) {
alert('Bin Number invalid');
return false;
}
}

function check_mobile_no(id) {
var mobile = document.getElementById(id).value;
var extra_parms = '';
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. length should be 10 digits.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}
var term_and_conditions = document.getElementById('term_and_conditions').checked;
if(!term_and_conditions) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}
if(document.getElementById('tata_aig')) {
if(document.getElementById('tata_aig').checked) {
extra_parms = '&tata=true';
} else {
extra_parms = '&tata=false';
}
}
$j.ajax({
type: "POST",
url: "web/ajax/save_mobile_to_session.php",
data: "mobile="+mobile + extra_parms,
success: function(responseData) {
document.payment_form.action = 'https://oxicash.in/Oxipay.asp';
if(responseData) {
return_data = eval("("+responseData+")");
if( return_data['msg'] == 'success' ) {
document.payment_form.submit();
} else {
alert(return_data['msg']);
}
} else {
alert('Some server error occured. Please try again');
goto('fresh_booking?cancel=fresh', '_self');
}
}
});
return true;
}

function check_film_search_form() {
var film_name = document.getElementById('film_name').value;
var film_code = document.getElementById('film_code').value;

if(film_name == '' && film_code == '') {
alert('Fill a search criterion.');
return false;
}

}

function check_internal_booking() {
var viewer_name = document.getElementById('viewer_name').value;
if(viewer_name == '' || viewer_name == null) {
alert('Fill viewer name.');
return false;
}
var viewer_email_id = document.getElementById('viewer_email_id').value;
if(viewer_email_id != '') {
if(!isValidEmail(viewer_email_id, 'viewer email id')) {
return false;
}
}
var viewer_mobile = document.getElementById('viewer_mobile').value;
if(viewer_mobile != '') {
if(!IsNumeric(viewer_mobile)) {
alert('Viewer mobile number invalid.');
return false;
}
}
}

function check_ccavenue_form(id) {
var select_card = document.getElementById('select_card').value;
var select_internet_banking = document.getElementById('select_internet_banking').value;

if( select_card == '' && select_internet_banking == '') {
alert('Please select payment type');
return false;
}

var mobile = document.getElementById(id).value;
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. length should be 10 digits.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}
var term_and_conditions = document.getElementById('term_and_conditions').checked;
if(!term_and_conditions) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}
extra_parms = '';
if(document.getElementById('tata_aig')) {
if(document.getElementById('tata_aig').checked) {
var extra_parms = '&tata=true';
} else {
var extra_parms = '&tata=false';
}
}

// customer's mobile number for ccavenue's mail.
document.getElementById('billing_cust_tel').value = document.getElementById(id).value;
document.getElementById('delivery_cust_tel').value = document.getElementById(id).value;

$j.ajax({
type: "POST",
url: "web/ajax/save_mobile_to_session.php",
data: "mobile="+mobile + extra_parms,
success: function(responseData) {
if(responseData) {
return_data = eval("("+responseData+")");
if( return_data['msg'] == 'success' ) {
document.payment_form.submit();
} else {
alert(return_data['msg']);
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
}
});
return true;
}

function now_showing() {
var j = 1;
for(var k = 1; k <= total_films; k++) {
if(cinema_regions[k] == selected_region) {
now_showing_film_code[j] = film_code[k];
now_showing_film_title[j] = film_title[k];
now_showing_film_image[j++] = film_image[k];
}
}
var films_count = j-1;
if(films_count) {
var total_rows = parseInt(films_count / 4);
var last_row_count = (films_count % 4);
if( last_row_count == 0) {
last_row_count = 4;
} else {
total_rows += 1;
}

var carry_on = 1;
var row_count = 1;
var html = '';
var chopped_title = '';
var order = 1;
for(var row = 1; row <= total_rows; row++) {
if( row == total_rows ) {
row_count = last_row_count;
} else {
row_count = 4;
}
html += '<div class="movie_module_text now_showing_movie_module_text">';
for(var l = 1; l <= row_count; l++) {
html += '<span onmouseover="this.className=\'active\'" onmouseout="this.className=\'\'">';
html += '<label>';
chopped_title = now_showing_film_title[order].substr(0, 10);
html += '<a href="#" onclick="post_film_details(\''+now_showing_film_code[order]+'\', \'\', \'\', \'\', \'now_showing\', \'film_details\', \''+now_showing_film_image[order]+'\');return false;">'+chopped_title+'</a>';
html += '</label>';
html += '<em>';
html += '<a href="#" onclick="post_film_details(\''+now_showing_film_code[order]+'\', \'\', \'\', \'\', \'now_showing\', \'film_details\', \''+now_showing_film_image[order]+'\');return false;"><img src="'+now_showing_film_image[order]+'" alt="Thumbnail" width="104" height="134" /></a>';
html += '</em>';
html += '<dfn>';
html += '<a style="text-decoration:none;" href="#" onclick="post_film_details(\''+now_showing_film_code[order]+'\', \'\', \'\', \'\', \'now_showing\', \'booking\', \''+now_showing_film_image[order]+'\');return false;">Book</a>';
html += '</dfn>';
html += '<b>';
html += '<a href="#" onclick="post_film_details(\''+now_showing_film_code[order]+'\', \'\', \'\', \'\', \'now_showing\', \'film_details\', \''+now_showing_film_image[order]+'\');return false;">Details</a>';
html += '</b>';
html += '</span>';
order++;
}
html += '</div>';
}
} else {
html = '<div class="movie_module_text now_showing_movie_module_text"><b style="color:red;">No movies available for selected city/state.</b></div>';
}
document.getElementById('fill_nowshowing').innerHTML = html;
}

function  nowShowingHome() {
var j = 1;
for(var k = 1; k <= total_films; k++) {
if(cinema_regions[k] == selected_region) {
now_showing_film_code[j] = film_code[k];
now_showing_film_title[j] = film_title[k];
now_showing_film_image[j++] = film_image[k];
}
}
var films_count = j-1;
actualwidth1 =  ( 113.4 * films_count);
var posters = '';
for(var k = 1; k <= films_count; k++) {
posters += '<dfn><a href="#"  onclick="post_film_details(\''+now_showing_film_code[k]+'\', \'\', \'\', \'\', \'home\', \'film_details\', \''+now_showing_film_image[k]+'\');return false;"><img src="'+now_showing_film_image[k]+'" width="109" height="145" alt="Thumnails" /></a></dfn>';
}
document.getElementById('featured').innerHTML = posters;
}


function setLoginCookies(email, first_name, last_name, keep_loggedin) {
setCookie('email', email, 24, 'minutes');
setCookie('first_name', first_name, 24, 'minutes');
setCookie('last_name', last_name, 24, 'minutes');

if(keep_loggedin != 'keep_loggedin') {
setCookie('login_message', 'You have successfully logged in.', 2, 'minutes');
}
}

function unsetLoginCookies() {
setCookie('email', '', 1);
setCookie('first_name', '', 1);
setCookie('last_name', '', 1);
setCookie('logout_message', 'You have successfully logged out.', 2, 'minutes');
}

function reset_freshform(region_id) {
$j.ajax({
type: "POST",
url: "web/ajax/get_cinemas_by_region.php",
data: "region_id="+region_id,
success: function(cinemas){
$j('#selectcinema').html(cinemas);
}
});
$j('#selectmovie').html('<option>Select Movie:</option>');
$j('#selectdate').html('<option>Select Date:</option>');
$j('#selecttime').html('<option>Select Time:</option>');
$j('#selectprice').html('<option>Select Price:</option>');
}

function edit_wallet_balance() {
var status1 = document.getElementById('status').value;
if(status1 != 'Y') {
alert('Please enable the status first.');
return false;
}

var convenience_rate = document.getElementById('convenience_rate').value;

if(convenience_rate != '' || convenience_rate != null) {
if(!IsNumeric(convenience_rate))  {
alert('Convenience rate invalid.');
return false;
}
}

var amount = document.getElementById('amount').value;
if(amount == '' || amount == null) {
alert('Please enter amount first.');
return false;
}

if(!IsNumeric(amount))  {
alert('Amount is invalid.');
return false;
}

}

function check_wallet_form(id) {
var mobile = document.getElementById(id).value;
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. length should be 10 digits.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}
var term_and_conditions = document.getElementById('term_and_conditions').checked;
if(!term_and_conditions) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}
if(document.getElementById('tata_aig')) {
if(document.getElementById('tata_aig').checked) {
var extra_parms = '&tata=true';
} else {
var extra_parms = '&tata=false';
}
}
$j.ajax({
type: "POST",
url: "web/ajax/save_mobile_to_session.php",
data: "mobile="+mobile+ extra_parms,
success: function(responseData) {
if(responseData) {
return_data = eval("("+responseData+")");
if( return_data['msg'] == 'success' ) {
document.payment_form.submit();
} else {
alert(return_data['msg']);
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
}
});
return true;
}

function check_wallet_transaction_report(form_name) {

var email_id = document.getElementById('email_id').value;
var mobile = document.getElementById('mobile').value;
var user_name = document.getElementById('user_name').value;
var booking_id = document.getElementById('booking_id').value;
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;
var full_report = document.getElementById('full_report').checked;

if(start_date == '' &&  end_date == '' && email_id == '' && mobile == '' && user_name =='' && booking_id == '' &&  full_report == false) {
alert('Select atleast one search criterion.');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date_parts[0].split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];

var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/'); 
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];

var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}

var email = document.getElementById('email_id').value; 
if((email != '') && !isValidEmail(email, '')) {
return false;
}
}

function check_wallet_balance_report(form_name) {

var email_id = document.getElementById('email_id').value;
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;
var full_report = document.getElementById('full_report').checked;

if(start_date == '' &&  end_date == '' && email_id == '' &&  full_report == false) {
alert('Select atleast one search criterion.');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date.split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];
var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/');
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];
var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}

var email = document.getElementById('email_id').value; 
if((email != '') && !isValidEmail(email, '')) {
return false;
}
}

function check_wallet_balance_report_pvr(form_name) {
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;
var full_report = document.getElementById('full_report').checked;

if(start_date == '' &&  end_date == '' &&  full_report == false) {
alert('Select atleast one search criterion.');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date.split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];
var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/');
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];
var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}
}


function display_timer_admin(minutes, seconds) {
if (seconds<=0) {
seconds=59;
minutes-=1;
}
if (minutes<=-1) {
seconds=0 ;
minutes+=1;
alert('Sorry, your session has expired, please start booking process again');
goto('admin_ticket_booking?cancel=done', '_self');
return false;
} else {
seconds-=1;
}

if (seconds <= 9) {
var formated_seconds = '0'+seconds;
} else {
var formated_seconds = seconds;
}
document.getElementById('remaining_time').innerHTML = minutes+" : "+formated_seconds;
setTimeout( function(){ display_timer_admin(minutes, seconds) }, 1000);
}

function enable_disable_options(card_option1, card_option2) {
document.getElementById(card_option1).disabled = false;
document.getElementById(card_option2).disabled = true;
}

function showAmexCvv() {
$j('#cvv_button').click();
}

function check_amex_form() {
var cardno = document.getElementById('cardno').value;
if( isWhitespace(cardno) ) {
alert('Enter the card number.');
return false;
}
if(cardno.length != 15) {
alert('Invalid card number.');
return false;
}

if(!IsNumeric(cardno)) {
alert('Invalid card number, it should be numeric.');
return false;
}

var month = document.getElementById('expirymonth').value;
var year = document.getElementById('expiryyear').value;

if(month == '' || month == null) {
alert('Enter card expiry month.');
return false;
}

if(year == '' || year == null) {
alert('Enter card expiry year.');
return false;
}

var month_year = year+month;
document.getElementById('vpc_CardExp').value = month_year;

var cvv = document.getElementById('cvv').value;
if( isWhitespace(cvv) ) {
alert('Enter the CVV/CSC');
return false;
}

if(cvv.length != 4) {
alert('Invalid Card Security Code(cvv/csc).');
return false;
}
if(!IsNumeric(cvv)) {
alert('Invalid Card Security Code(cvv/csc), it should be numeric.');
return false;
}
document.getElementById('vpc_CardSecurityCode').value = cvv;

var name_on_card = document.getElementById('name_on_card').value;
if( isWhitespace(name_on_card) ) {
alert('Enter the name(as on card).');
return false;
}

var zip_code = document.getElementById('zip_code').value;
if( isWhitespace(zip_code) ) {
alert('Enter the zip code');
return false;
}
if(zip_code.length < 5) {
alert('Incorrect zip code, it should be atleast 5 digits long.');
return false;
}
document.getElementById('vpc_AVS_PostCode').value = zip_code;

var mobile = document.getElementById('mobile').value;

if( isWhitespace(mobile) ) {
alert('Enter the mobile number.');
return false;
}
if(mobile.length != 10) {
alert('Incorrect mobile number, it must be 10 digits long.');
return false;
}

if(!IsNumeric(mobile)) {
alert('Mobile number invalid.');
return false;
}

var term_and_conditions = document.getElementById('term_and_conditions').checked;
if(!term_and_conditions) {
alert('oops you forgot to check the "terms and conditions" field');
return false;
}

if(document.getElementById('tata_aig')) {
if(document.getElementById('tata_aig').checked) {
var extra_parms = '&tata=true';
} else {
var extra_parms = '&tata=false';
}
}
$j.ajax({
type: "POST",
url: "web/ajax/save_mobile_to_session.php",
data: "mobile="+mobile+ extra_parms,
success: function(responseData) {
if(responseData) {
return_data = eval("("+responseData+")");
if( return_data['msg'] == 'success' ) {
document.payment_form.submit();
} else {
alert(return_data['msg']);
}
} else {
alert('Some server error occured. Please try again');
goto('home', '_self');
}
}
});
return true;
}

function change_wallet_status_button() {
var status_button = document.getElementById('status_button').value;
if(status_button == 'Activated') {
document.getElementById('status_button').value = 'Deactivated';
document.getElementById('status').value = '';
return;
}
if(status_button == 'Deactivated') {
document.getElementById('status_button').value = 'Activated';
document.getElementById('status').value = 'Y';
return;
}
}


function check_fbconnect_form() {
var email = document.getElementById('email').value; 
if(email.length == 0) { 
alert('Email cannot be left blank.');
return false;
}

if(!isValidEmail(email, '')) {
return false;
}

var email_confirm = document.getElementById('email_confirm').value; 
if(email_confirm.length == 0) { 
alert('Confirm email cannot be left blank.');
return false;
}

if(!isValidEmail(email_confirm, 'confirm')) {
return false;
}

if(email != email_confirm) {
alert('Email id and Confirm Email id mismatch.');
return false;
}
document.forms['fbconnect_data'].submit();
}


function check_fbconnect_mapping_form() {
var email = document.getElementById('email_map').value;
if(email.length == 0) {
alert('Email Id cannot be left blank.');
return false;
}

if(!isValidEmail(email, '')) {
return false;
}

var password = document.getElementById('password_map').value;

if(password.length == 0) {
alert('Password field cannot be left blank.');
return false;
}
document.forms['fbconnect_mapping'].submit();
}


function open_form(obj) {
// hide error messages
if(document.getElementById('error1') && document.getElementById('error1').style.display == 'block') {
document.getElementById('error1').style.display = 'none';
}
if(document.getElementById('error2') && document.getElementById('error2').style.display == 'block') {
document.getElementById('error2').style.display = 'none';
}

var radio_id = obj.id;

if(radio_id == 'open_new_user_form') {
if(document.getElementById('existing_user_mapping_form').style.display == 'block') {
$j('#existing_user_mapping_form').slideUp("slow");
}
$j('#new_user_form').slideDown("slow");
}  else {
$j('#existing_user_mapping_form').slideDown("slow");
if(document.getElementById('new_user_form').style.display == 'block') {
$j('#new_user_form').slideUp("slow");
}
}
}

function check_wallet_convenience_rate() {
var convenience_rate = document.getElementById('convenience_rate').value;
if(!isWhitespace(convenience_rate)) {
if(!IsNumeric(convenience_rate))  {
alert('Convenience rate invalid.');
return false;
}
}
document.getElementById('convenience').value = '1';
document.forms['wallet_edit_form'].submit();
}
function check_questions() {
var temp=new Array();
for(var j=1; j < 4; j++) {
temp[j] = 4;
var len = eval("document.pvr_contest.group" + j);
for (var i=0; i < len.length; i++) {
if (eval("document.pvr_contest.group" + j + "["+i+"].checked") == true){
temp[j] = 1;
}
}
if(temp[j] != 1){
alert('Please answer question '+j);
return false;
}
}
var uname = document.getElementById('uname').value;
if(isWhitespace(uname)) {
alert('Please fill in your Name.');
return false;
}

var mobile = document.getElementById('mobile').value;
if(isWhitespace(mobile)) {
alert('Please fill in your Mobile No.');
return false;
}
if(mobile.length == 0) {
alert('Mobile No. cannot be blank');
return false;
}
if(mobile.length != 10) {
alert('Mobile No. length should be 10 digits.');
return false;
}
if(!IsNumeric(mobile)) {
alert('Mobile No. invalid');
return false;
}
var email = document.getElementById('email').value;
if(email.length == 0) {
alert('Please fill in your e-mail address.');
return false;
}
if(!isValidEmail(email, '')) {
return false;
}
var address = document.getElementById('address').value;
if(isWhitespace(address)) {
alert('Please fill in your Address.');
return false;
}
return true;
}

function check_facebook_user() {
var start_date = document.getElementById('start_date').value;
var end_date = document.getElementById('end_date').value;
var full_report = document.getElementById('full_report').checked;

if(start_date == '' &&  end_date == '' &&  full_report == false) {
alert('Select atleast one search criterion.');
return false;
}

if(end_date != '' && start_date == '') {
alert('Select start date first.');
return false;
}

if(start_date != '') {
start_date_parts = start_date.split(' ');
start_dat = start_date.split('-');
start_month = start_dat[0];
start_day = start_dat[1];
start_year = start_dat[2];
var date_start = new Date(start_month+'/'+start_day+'/'+start_year+'/');
}
if(end_date != '') {
end_date_parts = end_date.split(' ');
end_dat = end_date_parts[0].split('-');
end_month = end_dat[0];
end_day = end_dat[1];
end_year = end_dat[2];
var date_end = new Date(end_month+'/'+end_day+'/'+end_year+'/');
}

if(date_start != '') {
var curdate = new Date();
if(date_start > curdate) {
alert('Start date cannot be greater than today.');
return false;
}
}

if(date_end != '') {
var curdate = new Date();
if(date_end > curdate) {
alert('End date cannot be greater than today.');
return false;
}
}

if(end_date != '' && start_date != '') {
if(date_start > date_end) {
alert('Start date cannot be greater than end date.');
return false;
}
}

if(start_date != '') {
document.getElementById('start_date').value = start_day+'-'+start_month+'-'+start_year;
}
if(end_date != '') {
document.getElementById('end_date').value = end_day+'-'+end_month+'-'+end_year;
}
}

