/* http://www.JSON.org/json2.js 2010-03-20 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. See http://www.JSON.org/js.html This code should be minified before deployment. See http://javascript.crockford.com/jsmin.html USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO NOT CONTROL. This file creates a global JSON object containing two methods: stringify and parse. JSON.stringify(value, replacer, space) value any JavaScript value, usually an object or array. replacer an optional parameter that determines how object values are stringified for objects. It can be a function or an array of strings. space an optional parameter that specifies the indentation of nested structures. If it is omitted, the text will be packed without extra whitespace. If it is a number, it will specify the number of spaces to indent at each level. If it is a string (such as '\t' or ' '), it contains the characters used to indent at each level. This method produces a JSON text from a JavaScript value. When an object value is found, if the object contains a toJSON method, its toJSON method will be called and the result will be stringified. A toJSON method does not serialize: it returns the value represented by the name/value pair that should be serialized, or undefined if nothing should be serialized. The toJSON method will be passed the key associated with the value, and this will be bound to the value For example, this would serialize Dates as ISO strings. Date.prototype.toJSON = function (key) { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } return this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z'; }; You can provide an optional replacer method. It will be passed the key and value of each member, with this bound to the containing object. The value that is returned from your method will be serialized. If your method returns undefined, then the member will be excluded from the serialization. If the replacer parameter is an array of strings, then it will be used to select the members to be serialized. It filters the results such that only members with keys listed in the replacer array are stringified. Values that do not have JSON representations, such as undefined or functions, will not be serialized. Such values in objects will be dropped; in arrays they will be replaced with null. You can use a replacer function to replace those with JSON values. JSON.stringify(undefined) returns undefined. The optional space parameter produces a stringification of the value that is filled with line breaks and indentation to make it easier to read. If the space parameter is a non-empty string, then that string will be used for indentation. If the space parameter is a number, then the indentation will be that many spaces. Example: text = JSON.stringify(['e', {pluribus: 'unum'}]); // text is '["e",{"pluribus":"unum"}]' text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' text = JSON.stringify([new Date()], function (key, value) { return this[key] instanceof Date ? 'Date(' + this[key] + ')' : value; }); // text is '["Date(---current time---)"]' JSON.parse(text, reviver) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional reviver parameter is a function that can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then the structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. Values that look like ISO date strings will // be converted to Date objects. myData = JSON.parse(text, function (key, value) { var a; if (typeof value === 'string') { a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); if (a) { return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); } } return value; }); myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { var d; if (typeof value === 'string' && value.slice(0, 5) === 'Date(' && value.slice(-1) === ')') { d = new Date(value.slice(5, -1)); if (d) { return d; } } return value; }); This is a reference implementation. You are free to copy, modify, or redistribute. */ /*jslint evil: true, strict: false */ /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length, parse, prototype, push, replace, slice, stringify, test, toJSON, toString, valueOf */ // Create a JSON object only if one does not already exist. We create the // methods in a closure to avoid creating global variables. if (!this.JSON) { this.JSON = {}; } (function () { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } if (typeof Date.prototype.toJSON !== 'function') { Date.prototype.toJSON = function (key) { return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null; }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function (key) { return this.valueOf(); }; } var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { // table of character substitutions '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' }, rep; function quote(string) { // If the string contains no control characters, no quote characters, and no // backslash characters, then we can safely slap some quotes around it. // Otherwise we must also replace the offending characters with safe escape // sequences. escapable.lastIndex = 0; return escapable.test(string) ? '"' + string.replace(escapable, function (a) { var c = meta[a]; return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }) + '"' : '"' + string + '"'; } function str(key, holder) { // Produce a string from holder[key]. var i, // The loop counter. k, // The member key. v, // The member value. length, mind = gap, partial, value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value. if (value && typeof value === 'object' && typeof value.toJSON === 'function') { value = value.toJSON(key); } // If we were called with a replacer function, then call the replacer to // obtain a replacement value. if (typeof rep === 'function') { value = rep.call(holder, key, value); } // What happens next depends on the value's type. switch (typeof value) { case 'string': return quote(value); case 'number': // JSON numbers must be finite. Encode non-finite numbers as null. return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': // If the value is a boolean or null, convert it to a string. Note: // typeof null does not produce 'null'. The case is included here in // the remote chance that this gets fixed someday. return String(value); // If the type is 'object', we might be dealing with an object or an array or // null. case 'object': // Due to a specification blunder in ECMAScript, typeof null is 'object', // so watch out for that case. if (!value) { return 'null'; } // Make an array to hold the partial results of stringifying this object value. gap += indent; partial = []; // Is the value an array? if (Object.prototype.toString.apply(value) === '[object Array]') { // The value is an array. Stringify every element. Use null as a placeholder // for non-JSON values. length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || 'null'; } // Join all of the elements together, separated with commas, and wrap them in // brackets. v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v; } // If the replacer is an array, use it to select the members to be stringified. if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { k = rep[i]; if (typeof k === 'string') { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { // Otherwise, iterate through all of the keys in the object. for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } // Join all of the member texts together, separated with commas, // and wrap them in braces. v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v; } } // If the JSON object does not yet have a stringify method, give it one. if (typeof JSON.stringify !== 'function') { JSON.stringify = function (value, replacer, space) { // The stringify method takes a value and an optional replacer, and an optional // space parameter, and returns a JSON text. The replacer can be a function // that can replace values, or an array of strings that will select the keys. // A default replacer method can be provided. Use of the space parameter can // produce text that is more easily readable. var i; gap = ''; indent = ''; // If the space parameter is a number, make an indent string containing that // many spaces. if (typeof space === 'number') { for (i = 0; i < space; i += 1) { indent += ' '; } // If the space parameter is a string, it will be used as the indent string. } else if (typeof space === 'string') { indent = space; } // If there is a replacer, it must be a function or an array. // Otherwise, throw an error. rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } // Make a fake root object containing our value under the key of ''. // Return the result of stringifying the value. return str('', {'': value}); }; } // If the JSON object does not yet have a parse method, give it one. if (typeof JSON.parse !== 'function') { JSON.parse = function (text, reviver) { // The parse method takes a text and an optional reviver function, and returns // a JavaScript value if the text is a valid JSON text. var j; function walk(holder, key) { // The walk method is used to recursively walk the resulting structure so // that modifications can be made. var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } } return reviver.call(holder, key, value); } // Parsing happens in four stages. In the first stage, we replace certain // Unicode characters with escape sequences. JavaScript handles many characters // incorrectly, either silently deleting them, or treating them as line endings. text = String(text); cx.lastIndex = 0; if (cx.test(text)) { text = text.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } // In the second stage, we run the text against regular expressions that look // for non-JSON patterns. We are especially concerned with '()' and 'new' // because they can cause invocation, and '=' because it can cause mutation. // But just to be safe, we want to reject all unexpected forms. // We split the second stage into 4 regexp operations in order to work around // crippling inefficiencies in IE's and Safari's regexp engines. First we // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we // replace all simple value tokens with ']' characters. Third, we delete all // open brackets that follow a colon or comma or that begin the text. Finally, // we look to see that the remaining characters are only whitespace or ']' or // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. if (/^[\],:{}\s]*$/. test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity // in JavaScript: it can begin a block or an object literal. We wrap the text // in parens to eliminate the ambiguity. j = eval('(' + text + ')'); // In the optional fourth stage, we recursively walk the new structure, passing // each name/value pair to a reviver function for possible transformation. return typeof reviver === 'function' ? walk({'': j}, '') : j; } // If the text is not JSON parseable, then a SyntaxError is thrown. throw new SyntaxError('JSON.parse'); }; } }()); /*! jQuery v1.7 jquery.com | jquery.org/license */ (function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"":"")+""),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="
"+""+"
";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&& (b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after" ,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);var map = null; var marker = null; var geocoder = null; var polyPoints = Array(); function search_address() { showAddress(document.getElementById('address').value); } function gpsToReal(g, m, s) { return g+m/60+s/3600; } function realToGps(r) { var g = Math.floor(r); var m = Math.floor((r - g) * 60); var s = (((r - g) * 60) - Math.floor((r - g) * 60)) * 60; return g + '°' + m + '\'' + s + '"'; } function realToGpsG(r) { var g = Math.floor(r); var m = Math.floor((r - g) * 60); var s = (((r - g) * 60) - Math.floor((r - g) * 60)) * 60; return g; } function realToGpsM(r) { var g = Math.floor(r); var m = Math.floor((r - g) * 60); var s = (((r - g) * 60) - Math.floor((r - g) * 60)) * 60; return m; } function realToGpsS(r) { var g = Math.floor(r); var m = Math.floor((r - g) * 60); var s = (((r - g) * 60) - Math.floor((r - g) * 60)) * 60; return s; } function center_map() { map.setCenter(new GLatLng(marker.getLatLng().lat(), marker.getLatLng().lng())); } function mapClick(overlay, clickedPoint) { map.clearOverlays(); var mapNormalProj = G_NORMAL_MAP.getProjection(); var mapZoom = map.getZoom(); var clickedPixel = mapNormalProj.fromLatLngToPixel(clickedPoint, mapZoom); // alert(polyPoints); // polyPoints.pop(); // polyPoints.push(clickedPoint); // polyPoints.push(polyPoints[0]); // var polygon = new GPolygon(polyPoints,"#000000",2,.5,"#0F0",.2); // map.addOverlay(polygon); } function initialize_map(type, data) { if (type != null) { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map_canvas")); map.enableScrollWheelZoom(); map.setMapType(G_PHYSICAL_MAP); // map.setUIToDefault(); // inicializacne suradnice // alert(type+' '+data[0]); switch (type) { case 'region': getMarkers('/2010/ajax/regionmapdata/region_id/'+data[0]+'/data.xml', map); break; } } } } /** * @author jsilaci */ function updateClock ( ) { var currentTime = new Date ( ); var currentHours = currentTime.getHours ( ); var currentMinutes = currentTime.getMinutes ( ); var currentSeconds = currentTime.getSeconds ( ); // Pad the minutes and seconds with leading zeros, if required currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes; currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds; /* // Choose either "AM" or "PM" as appropriate var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM"; // Convert the hours component to 12-hour format if needed currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours; // Convert an hours component of "0" to "12" currentHours = ( currentHours == 0 ) ? 12 : currentHours; */ // Compose the string for display // var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay; var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " "; // Update the time display document.getElementById("clock").innerHTML = currentTimeString; } /* * *//** * @author jsilaci */ /** * Pridanie event listeneru k elementu * @param {String} elementID - element, ku ktoremu pridavame listener * @param {String} action - akcia, ktora aktivuje listener bez predpony "on" * @param {Function} fnc - funkcia, ktora sa zavola po aktivacii */ function addListener(elementId, action, fnc) { var elm = document.getElementById(elementId); if (elm != null) { if (elm.addEventListener) { elm.addEventListener(action, fnc, false); elm.addEventListener(action, fnc, false); } else if (el.attachEvent) { elm.attachEvent("on" + action, fnc); elm.attachEvent("on" + action, fnc); } } } /** * @author * Funkcia vytvori objekt typu xmlHTTPRequest a vrati ho. Objekt bude vytvoreny v zavislosti od typu prehliadaca. */ function getXmlHttp() { var xmlhttp = false; if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } if (!xmlhttp && window.createRequest) { try { xmlhttp = window.createRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } // vytvorim novy xmlhttprequest objekt na komunikaciu //var xmlhttp = getXmlHttp(); /** * Nacitanie textu zo zadanej url do HTML elementu pomocou aobjektu xmlhttprequest * @param {Object} textUrl - adresa subor, ktoreho obsah sa nacita * @param {Object} tagId - id HTML elementu, ktoreho obsah sa nahradi (innerHTML) * @param {Function} onLoad - nazov funkcie, ktora sa zavola po ukonceni requestu - zadava sa nazov fcie bez () a bez uvodzoviek */ function getContent(Url, tagId, onLoad) { // var xmlhttp = new XMLHttpRequest(); var xmlhttp = getXmlHttp(); // otvorim poziadavku xmlhttp.open("GET", Url, true); // pridam funkciu pre spracovanie zmeny stavu xmlhttp requestu - anonymna fcia /* * Stavy objektu XMLHttpRequest * 0 poziadavka nebola inicializovana * 1 poziadavka je pripravena * 2 poziadavka bola odoslana * 3 pozidavka sa spracuva * 4 poziadavka je dokoncena */ xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState > 0 && xmlhttp.readyState < 4) { if (tagId != null) document.getElementById(tagId).innerHTML = "Aktualizujem..."; } else if (xmlhttp.readyState==4) { if (tagId != null) document.getElementById(tagId).innerHTML = xmlhttp.responseText; // alert(xmlhttp.responseText); if (onLoad != null) { onLoad(); } } } // poslem poziadavku xmlhttp.send(null); } /** * Nacitanie markerov definovanych pomocou url do mapy * */ function mapShowNearObject(object_id, distance) { var elm = document.getElementById('map_canvas_obj_'+object_id); if (GBrowserIsCompatible()) { map = new GMap2(elm); map.setMapType(G_HYBRID_MAP); map.setUIToDefault(); // map.enableScrollWheelZoom(); // map.enableContinuousZoom(); map.disableScrollWheelZoom(); xmlhttp = getXmlHttp(); Url = baseUrl + '/ajax/objectmapdata/lang/' + locale + '/object_id/'+object_id+'/mode/1/distance/'+distance; //alert(Url); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { var xmlDoc = xmlhttp.responseXML; var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (var i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy var MIcon = new GIcon(G_DEFAULT_ICON); // treba to dedit z default, lebo inak treba vyplnit vela properties MIcon.image = baseUrl + "/public/pictures/markers/"+markersData[i].getAttribute("color")+".png";// image file name //MIcon.shadow = "http://localhost/2010/public/pictures/markers/red.png";// shadow file name MIcon.iconSize = new GSize(20, 32);// width (px) and height (px) //MIcon.shadowSize = new GSize(0, 0);// the shadow's size MIcon.iconAnchor = new GPoint(10, 32);// base of the icon MIcon.iconWindowAnchor = new GPoint(0, 0);// info window base MIcon.setInfoWindowAnchor = new GPoint(0, 0); marker = new GMarker(point, {draggable: false, name: {a:info, b:markersData[i].getAttribute("name"), id:object_id}, icon: MIcon}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name.a); }); GEvent.addListener(marker, "mouseover", function() { // alert(this.name.id + ': ' + this.name.b); document.getElementById("map_info_obj_" + this.name.id).innerHTML = this.name.b; }); GEvent.addListener(marker, "mouseout", function() { document.getElementById("map_info_obj_" + object_id).innerHTML = ' '; }); } // alert(map.getBoundsZoomLevel(latlngbounds)); map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)); } } xmlhttp.open("GET", Url, true); xmlhttp.send(null); } } function mapShowSearch() { var map = new GMap2(document.getElementById("map_canvas")); map.setMapType(G_NORMAL_MAP); map.setUIToDefault(); //map.disableDragging(); //map.disableDoubleClickZoom(); xmlhttp = getXmlHttp(); url = baseUrl + '/search/map/lang/'+locale; //alert(url); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { var xmlDoc = xmlhttp.responseXML; var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (var i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy var MIcon = new GIcon(G_DEFAULT_ICON); // treba to dedit z default, lebo inak treba vyplnit vela properties MIcon.image = baseUrl + "/public/pictures/markers/"+markersData[i].getAttribute("color")+".png";// image file name //MIcon.shadow = "http://localhost/2010/public/pictures/markers/red.png";// shadow file name MIcon.iconSize = new GSize(20, 32);// width (px) and height (px) //MIcon.shadowSize = new GSize(0, 0);// shadow size MIcon.iconAnchor = new GPoint(10, 32);// base of the icon MIcon.iconWindowAnchor = new GPoint(0, 0);// info window base MIcon.setInfoWindowAnchor = new GPoint(0, 0); marker = new GMarker(point, {draggable: false, name: {a:info, b:markersData[i].getAttribute("name"), id:markersData[i].getAttribute("id")}, icon: MIcon}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name.a); }); GEvent.addListener(marker, "mouseover", function() { // alert(this.name.id + ': ' + this.name.b); // document.getElementById("map_info_obj_" + this.name.id).innerHTML = this.name.b; }); GEvent.addListener(marker, "mouseout", function() { // document.getElementById("map_info_obj_" + object_id).innerHTML = ' '; }); } // alert(map.getBoundsZoomLevel(latlngbounds)); var zoomLevel = map.getBoundsZoomLevel(latlngbounds); //console.log(zoomLevel); if (markersData.length > 0) { if (zoomLevel > 13) zoomLevel = 13; map.setCenter(latlngbounds.getCenter(), zoomLevel); } else { zoomLevel = 7; map.setCenter(new GLatLng(48.70,19.5), zoomLevel); } } }; xmlhttp.open("GET", url, true); xmlhttp.send(null); } function mapShowSRRegions() { var map = new GMap2(document.getElementById("map_canvas")); map.setMapType(G_NORMAL_MAP); map.disableDragging(); map.disableDoubleClickZoom(); var colors = [ "#ffffff", "#ff0000", "#0000ff", "#00ff00", "#ff77ff", "#ff7733", "#777777", "#ffff00", "#ff00ff" ]; xmlhttp = getXmlHttp(); url = baseUrl + '/ajax/borderregionsmapdata/lang/' + locale + '/border.txt'; //alert(url); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { /* * Regiony */ /* * JSON */ var xmlDoc = xmlhttp.responseText; var borderData; // borderData = JSON.parse(xmlDoc); borderData = eval(xmlDoc); var points = Array(); var polygons = Array(); for (var j =0; j<=8; j++) { points = Array(); for (var i = 0; i < borderData[j].length; i++) { // alert(borderData[j][i]); try { var e = parseFloat(borderData[j][i][0]); var n = parseFloat(borderData[j][i][1]); var point = new GLatLng(e, n); points.push(point); } catch (ex) { // chybne data // alert(borderData[j][i]); } } var strokeColor = "#000077"; var strokeWeight = 2; var strokeOpacity = 1; var fillColor = colors[j]; var fillOpacity; if (j > 0) fillOpacity = 0.4; else fillOpacity = 0.0; polygon = new GPolygon(points, strokeColor, strokeWeight, strokeOpacity, fillColor, fillOpacity, {name:'test'}); if (j > 0) { GEvent.addListener(polygon, "click", function(latlng) { //alert(baseUrl + "/" + locale + "/regiony/" + this.id); //alert("http://www.cestovnyinformator.sk" + baseUrl + "/" + locale + "/regiony/" + this.id + "/region.html"); window.location = "http://www.cestovnyinformator.sk" + baseUrl + "/" + locale + "/regiony/" + this.id + "/region.html"; }); /* GEvent.addListener(polygon, "mouseover", function() { this.setFillStyle({opacity:'0.7'}); }); GEvent.addListener(polygon, "mouseout", function() { this.setFillStyle({opacity:'0.2'}); }); */ } polygon.id = j; map.addOverlay(polygon); polygons.push(polygon); } /* * centrovanie na region */ map.setCenter(polygons[0].getBounds().getCenter(), map.getBoundsZoomLevel(polygons[0].getBounds())); } } xmlhttp.open("GET", url, true); xmlhttp.send(null); } function mapShowSR() { var map = new GMap2(document.getElementById("map_canvas")); map.setMapType(G_NORMAL_MAP); xmlhttp_region = getXmlHttp(); url_region = baseUrl + '/ajax/bordersrmapdata/lang/' + locale + '/border.txt'; xmlhttp_region.onreadystatechange=function() { if (xmlhttp_region.readyState==4) { /* * Region */ var points = Array(); /* * JSON */ var xmlDoc = xmlhttp_region.responseText; // var borderData = JSON.parse(xmlDoc); // IE ma problem s JSON var borderData = eval(xmlDoc); for (i = 0; i < borderData.length; i++) { try { var point = new GLatLng(parseFloat(borderData[i][0]), parseFloat(borderData[i][1])); points.push(point); } catch (ex) { // cybne data } } var strokeColor = "#000077"; var strokeWeight = 1; var strokeOpacity = 1; var fillColor = "#0000ff"; var fillOpacity = 0.2; var polygon = new GPolygon(points, strokeColor, strokeWeight, strokeOpacity, fillColor, fillOpacity); map.addOverlay(polygon); /* * centrovanie na region */ map.setCenter(polygon.getBounds().getCenter(), map.getBoundsZoomLevel(polygon.getBounds())); } } xmlhttp_region.open("GET", url_region, true); xmlhttp_region.send(null); } function mapShowSRObjects() { var map = new GMap2(document.getElementById("map_canvas")); map.setMapType(G_PHYSICAL_MAP); xmlhttp_region = getXmlHttp(); url_region = baseUrl + '/ajax/bordersrmapdata/lang/' + locale + '/border.txt'; xmlhttp_objects = getXmlHttp(); url_objects = baseUrl + '/ajax/regionmapdata/lang/' + locale + '/data.xml'; xmlhttp_region.onreadystatechange=function() { if (xmlhttp_region.readyState==4) { /* * Region */ var points = Array(); /* * XML */ /* var xmlDoc = xmlhttp_region.responseXML; var borderData = xmlDoc.getElementsByTagName('object'); for (i = 0; i < borderData.length; i++) { var point = new GLatLng(parseFloat(borderData[i].getAttribute("gps_n")), parseFloat(borderData[i].getAttribute("gps_e"))); points.push(point); } */ /* * JSON */ var xmlDoc = xmlhttp_region.responseText; // var borderData = JSON.parse(xmlDoc); var borderData = eval(xmlDoc); for (i = 0; i < borderData.length; i++) { try { var point = new GLatLng(parseFloat(borderData[i][0]), parseFloat(borderData[i][1])); points.push(point); } catch(ex) { // chybne data } } var strokeColor = "#000077"; var strokeWeight = 3; var strokeOpacity = 1; var fillColor = "#0000ff"; var fillOpacity = 0.2; var polygon = new GPolygon(points, strokeColor, strokeWeight, strokeOpacity, fillColor, fillOpacity); map.addOverlay(polygon); /* * centrovanie na region */ map.setCenter(polygon.getBounds().getCenter(), map.getBoundsZoomLevel(polygon.getBounds())); } } xmlhttp_objects.onreadystatechange=function() { if (xmlhttp_objects.readyState==4) { var xmlDoc = xmlhttp_objects.responseXML; /* * Objekty */ var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy marker = new GMarker(point, {draggable: false, name: info}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name); }); } } } xmlhttp_region.open("GET", url_region, true); xmlhttp_objects.open("GET", url_objects, true); xmlhttp_region.send(null); xmlhttp_objects.send(null); } function mapShowRegion(region_id, type) { if (typeof type == 'undefined') var type = 4; map = new GMap2(document.getElementById("map_canvas")); map.setMapType(G_NORMAL_MAP); xmlhttp_region = getXmlHttp(); url_region = baseUrl + '/ajax/bordermapdata/lang/' + locale + '/region_id/' + region_id + '/border.txt'; xmlhttp_objects = getXmlHttp(); url_objects = baseUrl + '/ajax/regionmapdata/lang/' + locale + '/region_id/' + region_id + '/type/' + type + '/data.xml'; xmlhttp_region.onreadystatechange=function() { if (xmlhttp_region.readyState==4) { /* * Region */ var points = Array(); /* * JSON */ var xmlDoc = xmlhttp_region.responseText; // var borderData = JSON.parse(xmlDoc); var borderData = eval(xmlDoc); for (i = 0; i < borderData.length; i++) { try { var point = new GLatLng(parseFloat(borderData[i][0]), parseFloat(borderData[i][1])); points.push(point); } catch(ex) { // chybne data } } var strokeColor = "#000077"; var strokeWeight = 3; var strokeOpacity = 1; var fillColor = "#0000ff"; var fillOpacity = 0.2; var polygon = new GPolygon(points, strokeColor, strokeWeight, strokeOpacity, fillColor, fillOpacity); //GEvent.addListener(polygon, "click", function() { // alert('region'); //}); map.addOverlay(polygon); /* * centrovanie na region */ map.setCenter(polygon.getBounds().getCenter(), map.getBoundsZoomLevel(polygon.getBounds())); } } xmlhttp_objects.onreadystatechange=function() { if (xmlhttp_objects.readyState==4) { var xmlDoc = xmlhttp_objects.responseXML; /* * Objekty */ var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy var MIcon = new GIcon(G_DEFAULT_ICON); // treba to dedit z default, lebo inak treba vyplnit vela properties MIcon.image = baseUrl + "/public/pictures/markers/"+markersData[i].getAttribute("color")+".png";// image file name //MIcon.shadow = "http://localhost/2010/public/pictures/markers/red.png";// shadow file name MIcon.iconSize = new GSize(20, 32);// width (px) and height (px) //MIcon.shadowSize = new GSize(0, 0);// the shadow's size MIcon.iconAnchor = new GPoint(10, 32);// base of the icon MIcon.iconWindowAnchor = new GPoint(0, 0);// info window base MIcon.setInfoWindowAnchor = new GPoint(0, 0); marker = new GMarker(point, {draggable: false, name: {a:info, b:markersData[i].getAttribute("name")}, icon: MIcon}); //marker = new GMarker(point, {draggable: false, name: info, icon: MIcon}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name.a); }); GEvent.addListener(marker, "mouseover", function() { // alert(this.name.id + ': ' + this.name.b); document.getElementById("map_info_region").innerHTML = this.name.b; }); GEvent.addListener(marker, "mouseout", function() { document.getElementById("map_info_region").innerHTML = ' '; }); } } } xmlhttp_region.open("GET", url_region, true); xmlhttp_objects.open("GET", url_objects, true); xmlhttp_region.send(null); xmlhttp_objects.send(null); } /** * Nacitanie markerov definovanych pomocou url do mapy * */ function mapShowObject(object_id) { var elm = document.getElementById('map_canvas_obj_'+object_id); var elm_cont = document.getElementById('map_obj_'+object_id); if (elm_cont.style.visibility != 'visible') { if (GBrowserIsCompatible()) { elm.style.visibility = 'visible'; elm_cont.style.visibility = 'visible'; elm_cont.style.height = '360px'; elm.style.width = '350px'; elm.style.height = '300px'; map = new GMap2(elm); map.setMapType(G_HYBRID_MAP); map.setUIToDefault(); map.disableScrollWheelZoom(); Url = baseUrl + '/ajax/objectmapdata/lang/' + locale + '/object_id/'+object_id+'/mode/0'; //alert(Url); xmlhttp = getXmlHttp(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { var xmlDoc = xmlhttp.responseXML; var markersData = xmlDoc.getElementsByTagName('object'); var point = new GLatLng(parseFloat(markersData[0].getAttribute("gps_n")), parseFloat(markersData[0].getAttribute("gps_e"))); var info = markersData[0].childNodes[0].data; // info o markeri v html formate var MIcon = new GIcon(G_DEFAULT_ICON); // treba to dedit z default, lebo inak treba vyplnit vela properties MIcon.image = baseUrl + "/public/pictures/markers/"+markersData[0].getAttribute("color")+".png";// image file name //MIcon.shadow = "http://localhost/2010/public/pictures/markers/red.png";// shadow file name MIcon.iconSize = new GSize(20, 32);// width (px) and height (px) //MIcon.shadowSize = new GSize(0, 0);// the shadow's size MIcon.iconAnchor = new GPoint(10, 32);// base of the icon MIcon.iconWindowAnchor = new GPoint(0, 0);// info window base MIcon.setInfoWindowAnchor = new GPoint(0, 0); marker = new GMarker(point, {draggable: false, name: {a:info, b:markersData[0].getAttribute("name"), id:object_id}, icon: MIcon}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name.a); }); GEvent.addListener(marker, "mouseover", function() { // alert(this.name.id + ': ' + this.name.b); document.getElementById("map_info_obj_" + this.name.id).innerHTML = this.name.b; }); GEvent.addListener(marker, "mouseout", function() { document.getElementById("map_info_obj_" + object_id).innerHTML = ' '; }); map.setCenter(point, 12); } // mapShowRegion(map); } xmlhttp.open("GET", Url, true); xmlhttp.send(null); } } else { // alert('visible'); elm_cont.style.visibility = 'hidden'; elm_cont.style.height = '0px'; elm.style.visibility = 'hidden'; elm.style.height = '0px'; } } /** * Nacitanie markerov definovanych pomocou url do mapy * */ function getMarkers(Url, map) { xmlhttp = getXmlHttp(); //alert(Url); xmlhttp.onreadystatechange=function() { /* if (xmlhttp.readyState > 0 && xmlhttp.readyState < 4) { if (tagId != null) document.getElementById(tagId).innerHTML = "Aktualizujem..."; } else */ if (xmlhttp.readyState==4) { var xmlDoc = xmlhttp.responseXML; var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy marker = new GMarker(point, {draggable: false, name: info}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name); }); } map.setCenter(latlngbounds.getCenter( ), map.getBoundsZoomLevel(latlngbounds)); } } xmlhttp.open("GET", Url, true); xmlhttp.send(null); } function anketa_hlasuj(anketa_id, odpoved_id, locale) { getContent(baseUrl + "/ajax/anketa/odpoved_id/" + odpoved_id + "/anketa_id/" + anketa_id + '/locale/' + locale, 'anketa', null); } var hladaj_v_krajine = 'slovensko'; function search_setRegion(region_id) { if (hladaj_v_krajine == 'slovensko') getContent(baseUrl + "/ajax/getskokresy/region_id/" + region_id + '/locale/' + locale, 'SEARCH_OKRES', null); else getContent(baseUrl + "/ajax/getczokresy/region_id/" + region_id + '/locale/' + locale, 'SEARCH_OKRES', null); } function search_setTyp(typ_id) { if (hladaj_v_krajine == 'slovensko') getContent(baseUrl + "/ajax/getskdruhy/typ_id/" + typ_id + '/locale/' + locale, 'SEARCH_DRUH', null); else getContent(baseUrl + "/ajax/getczdruhy/typ_id/" + typ_id + '/locale/' + locale, 'SEARCH_DRUH', null); } function filter_setTyp(typ_id) { if (hladaj_v_krajine == 'slovensko') getContent(baseUrl + "/ajax/getdruhy/typ_id/" + typ_id + '/locale/' + locale, 'filter_druh', null); } function search_krajina(krajina) { hladaj_v_krajine = krajina; if (hladaj_v_krajine == 'slovensko') { getContent(baseUrl + "/ajax/getskregiony/locale/" + locale, 'SEARCH_REGION', null); getContent(baseUrl + "/ajax/getskokresy/region_id/" + 0 + '/locale/' + locale, 'SEARCH_OKRES', null); getContent(baseUrl + "/ajax/getsktypy/locale/" + locale, 'SEARCH_TYP', null); getContent(baseUrl + "/ajax/getskdruhy/typ_id/" + 0 + '/locale/' + locale, 'SEARCH_DRUH', null); } else { getContent(baseUrl + "/ajax/getczregiony/locale/" + locale, 'SEARCH_REGION', null); getContent(baseUrl + "/ajax/getczokresy/region_id/" + 0 + '/locale/' + locale, 'SEARCH_OKRES', null); getContent(baseUrl + "/ajax/getcztypy/locale/" + locale, 'SEARCH_TYP', null); getContent(baseUrl + "/ajax/getczdruhy/typ_id/" + 0 + '/locale/' + locale, 'SEARCH_DRUH', null); } }/** * @author jsilaci */ function checkFormRezeracia() { // alert('test'); var ok = true; var form = document.getElementById('reservation_form'); if (form.REZ_MENO.value == '') { form.REZ_MENO.style.backgroundColor = '#f00'; ok = false; } else { form.REZ_MENO.style.backgroundColor = '#0f0'; } if (form.REZ_PRIEZVISKO.value == '') { form.REZ_PRIEZVISKO.style.backgroundColor = '#f00'; ok = false; } else { form.REZ_PRIEZVISKO.style.backgroundColor = '#0f0'; } if (form.REZ_EMAIL.value == '') { form.REZ_EMAIL.style.backgroundColor = '#f00'; ok = false; } else { if (!form.REZ_EMAIL.value.match('^[a-zA-z1-9\\.\\-_]+@[a-zA-z1-9\\-_]+\\.{1}[a-zA-z1-9\\-\\._]+')) { form.REZ_EMAIL.style.backgroundColor = '#f00'; ok = false; } else { form.REZ_EMAIL.style.backgroundColor = '#0f0'; } } return ok; }// Script for NiftyPlayer 1.7, by tvst from varal.org // Released under the MIT License: http://www.opensource.org/licenses/mit-license.php var FlashHelper = { movieIsLoaded : function (theMovie) { if (typeof(theMovie) != "undefined") return theMovie.PercentLoaded() == 100; else return false; }, getMovie : function (movieName) { if (navigator.appName.indexOf ("Microsoft") !=-1) return window[movieName]; else return document[movieName]; } }; function niftyplayer(name) { this.obj = FlashHelper.getMovie(name); if (!FlashHelper.movieIsLoaded(this.obj)) return; this.play = function () { this.obj.TCallLabel('/','play'); }; this.stop = function () { this.obj.TCallLabel('/','stop'); }; this.pause = function () { this.obj.TCallLabel('/','pause'); }; this.playToggle = function () { this.obj.TCallLabel('/','playToggle'); }; this.reset = function () { this.obj.TCallLabel('/','reset'); }; this.load = function (url) { this.obj.SetVariable('currentSong', url); this.obj.TCallLabel('/','load'); }; this.loadAndPlay = function (url) { this.load(url); this.play(); }; this.getState = function () { var ps = this.obj.GetVariable('playingState'); var ls = this.obj.GetVariable('loadingState'); // returns // 'empty' if no file is loaded // 'loading' if file is loading // 'playing' if user has pressed play AND file has loaded // 'stopped' if not empty and file is stopped // 'paused' if file is paused // 'finished' if file has finished playing // 'error' if an error occurred if (ps == 'playing') if (ls == 'loaded') return ps; else return ls; if (ps == 'stopped') if (ls == 'empty') return ls; if (ls == 'error') return ls; else return ps; return ps; }; this.getPlayingState = function () { // returns 'playing', 'paused', 'stopped' or 'finished' return this.obj.GetVariable('playingState'); }; this.getLoadingState = function () { // returns 'empty', 'loading', 'loaded' or 'error' return this.obj.GetVariable('loadingState'); }; this.registerEvent = function (eventName, action) { // eventName is a string with one of the following values: onPlay, onStop, onPause, onError, onSongOver, onBufferingComplete, onBufferingStarted // action is a string with the javascript code to run. // // example: niftyplayer('niftyPlayer1').registerEvent('onPlay', 'alert("playing!")'); this.obj.SetVariable(eventName, action); }; return this; } var headerSlideShow = function() { var timer = null; var index = 0; var imgCount = 0; var zIndex = 1; function start() { imgCount = $("#header_foto img").size(); timer = setTimeout("headerSlideShow.cross()", 5000); } function cross() { $activeImg = $("#header_foto img:eq("+ index +")"); $activeImg.hide(); $activeImg.css('z-index', zIndex); $activeImg.fadeIn(1000); zIndex++; index++; index = index % imgCount; timer = setTimeout("headerSlideShow.cross()", 5000); } return { start: function() {start();}, cross: function() {cross();} }; }();/* Slimbox v2.03 - The ultimate lightweight Lightbox clone for jQuery (c) 2007-2009 Christophe Beyls MIT-style license. */ var var_counter_text = "{x} / {y}"; (function(w){var E=w(window),u,g,F=-1,o,x,D,v,y,L,s,n=!window.XMLHttpRequest,e=window.opera&&(document.compatMode=="CSS1Compat")&&(w.browser.version>=9.3),m=document.documentElement,l={},t=new Image(),J=new Image(),H,a,h,q,I,d,G,c,A,K;w(function(){w("body").append(w([H=w('
')[0],a=w('
')[0],G=w('
')[0]]).css("display","none"));h=w('
').appendTo(a).append(q=w('
').append([I=w('').click(B)[0],d=w('').click(f)[0]])[0])[0];c=w('
').appendTo(G).append([w('').add(H).click(C)[0],A=w('
')[0],K=w('
')[0],w('
')[0]])[0]});w.slimbox=function(O,N,M){u=w.extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeEasing:"swing",initialWidth:250,initialHeight:250,imageFadeDuration:400,captionAnimationDuration:400,counterText:var_counter_text,closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},M);if(typeof O=="string"){O=[[O,N]];N=0}y=E.scrollTop()+((e?m.clientHeight:E.height())/2);L=u.initialWidth;s=u.initialHeight;w(a).css({top:Math.max(0,y-(s/2)),width:L,height:s,marginLeft:-L/2}).show();v=n||(H.currentStyle&&(H.currentStyle.position!="fixed"));if(v){H.style.position="absolute"}w(H).css("opacity",u.overlayOpacity).fadeIn(u.overlayFadeDuration);z();k(1);g=O;u.loop=u.loop&&(g.length>1);return b(N)};w.fn.slimbox=function(M,P,O){P=P||function(Q){return[Q.href,Q.title]};O=O||function(){return true};var N=this;return N.unbind("click").click(function(){var S=this,U=0,T,Q=0,R;T=w.grep(N,function(W,V){return O.call(S,W,V)});for(R=T.length;Q=0)?C():(M(N,u.nextKeys)>=0)?f():(M(N,u.previousKeys)>=0)?B():false}function B(){return b(x)}function f(){return b(D)}function b(M){if(M>=0){F=M;o=g[F][0];x=(F||(u.loop?g.length:0))-1;D=((F+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";l=new Image();l.onload=j;l.src=o}return false}function j(){a.className="";w(h).css({backgroundImage:"url("+o+")",visibility:"hidden",display:""});w(q).width(l.width);w([q,I,d]).height(l.height);w(A).html(g[F][1]||"");w(K).html((((g.length>1)&&u.counterText)||"").replace(/{x}/,F+1).replace(/{y}/,g.length));if(x>=0){t.src=g[x][0]}if(D>=0){J.src=g[D][0]}L=h.offsetWidth;s=h.offsetHeight;var M=Math.max(0,y-(s/2));if(a.offsetHeight!=s){w(a).animate({height:s,top:M},u.resizeDuration,u.resizeEasing)}if(a.offsetWidth!=L){w(a).animate({width:L,marginLeft:-L/2},u.resizeDuration,u.resizeEasing)}w(a).queue(function(){w(G).css({width:L,top:M+s,marginLeft:-L/2,visibility:"hidden",display:""});w(h).css({display:"none",visibility:"",opacity:""}).fadeIn(u.imageFadeDuration,i)})}function i(){if(x>=0){w(I).show()}if(D>=0){w(d).show()}w(c).css("marginTop",-c.offsetHeight).animate({marginTop:0},u.captionAnimationDuration);G.style.visibility=""}function r(){l.onload=null;l.src=t.src=J.src=o;w([a,h,c]).stop(true);w([I,d,h,G]).hide()}function C(){if(F>=0){r();F=x=D=-1;w(a).hide();w(H).stop().fadeOut(u.overlayFadeDuration,k)}return false}})(jQuery); // AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED) if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) { jQuery(function($) { $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) { return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel)); }); }); }/* AnythingSlider v1.7.18 Original by Chris Coyier: http://css-tricks.com Get the latest version: https://github.com/ProLoser/AnythingSlider To use the navigationFormatter function, you must have a function that accepts two paramaters, and returns a string of HTML text. index = integer index (1 based); panel = jQuery wrapped LI item this tab references @return = Must return a string of HTML/Text navigationFormatter: function(index, panel){ return "Panel #" + index; // This would have each tab with the text 'Panel #X' where X = index } */ (function($) { $.anythingSlider = function(el, options) { var base = this, o; // Wraps the ul in the necessary divs and then gives Access to jQuery element base.el = el; base.$el = $(el).addClass('anythingBase').wrap('
'); // Add a reverse reference to the DOM object base.$el.data("AnythingSlider", base); base.init = function(){ // Added "o" to be used in the code instead of "base.options" which doesn't get modifed by the compiler - reduces size by ~1k base.options = o = $.extend({}, $.anythingSlider.defaults, options); base.initialized = false; if ($.isFunction(o.onBeforeInitialize)) { base.$el.bind('before_initialize', o.onBeforeInitialize); } base.$el.trigger('before_initialize', base); // Cache existing DOM elements for later // base.$el = original ul // for wrap - get parent() then closest in case the ul has "anythingSlider" class base.$wrapper = base.$el.parent().closest('div.anythingSlider').addClass('anythingSlider-' + o.theme); base.$window = base.$el.closest('div.anythingWindow'); base.win = window; base.$win = $(base.win); base.$controls = $('
').appendTo( (o.appendControlsTo !== null && $(o.appendControlsTo).length) ? $(o.appendControlsTo) : base.$wrapper); base.$startStop = $('
'); if (o.buildStartStop) { base.$startStop.appendTo( (o.appendStartStopTo !== null && $(o.appendStartStopTo).length) ? $(o.appendStartStopTo) : base.$controls ); } base.$nav = $('
    ').appendTo( (o.appendNavigationTo !== null && $(o.appendNavigationTo).length) ? $(o.appendNavigationTo) : base.$controls ); // Set up a few defaults & get details base.flag = false; // event flag to prevent multiple calls (used in control click/focusin) base.playing = o.autoPlay; // slideshow state; removed "startStopped" option base.slideshow = false; // slideshow flag needed to correctly trigger slideshow events base.hovered = false; // actively hovering over the slider base.panelSize = []; // will contain dimensions and left position of each panel base.currentPage = o.startPanel = parseInt(o.startPanel,10) || 1; // make sure this isn't a string o.changeBy = parseInt(o.changeBy,10) || 1; base.adj = (o.infiniteSlides) ? 0 : 1; // adjust page limits for infinite or limited modes base.width = base.$el.width(); base.height = base.$el.height(); base.outerPad = [ base.$wrapper.innerWidth() - base.$wrapper.width(), base.$wrapper.innerHeight() - base.$wrapper.height() ]; if (o.playRtl) { base.$wrapper.addClass('rtl'); } // Expand slider to fit parent if (o.expand) { base.$outer = base.$wrapper.parent(); base.$window.css({ width: '100%', height: '100%' }); // needed for Opera base.checkResize(); } // Build start/stop button if (o.buildStartStop) { base.buildAutoPlay(); } // Build forwards/backwards buttons if (o.buildArrows) { base.buildNextBackButtons(); } // can't lock autoplay it if it's not enabled if (!o.autoPlay) { o.autoPlayLocked = false; } base.updateSlider(); base.$lastPage = base.$currentPage; // Get index (run time) of this slider on the page base.runTimes = $('div.anythingSlider').index(base.$wrapper) + 1; base.regex = new RegExp('panel' + base.runTimes + '-(\\d+)', 'i'); // hash tag regex if (base.runTimes === 1) { base.makeActive(); } // make the first slider on the page active // Make sure easing function exists. if (!$.isFunction($.easing[o.easing])) { o.easing = "swing"; } // If pauseOnHover then add hover effects if (o.pauseOnHover) { base.$wrapper.hover(function() { if (base.playing) { base.$el.trigger('slideshow_paused', base); base.clearTimer(true); } }, function() { if (base.playing) { base.$el.trigger('slideshow_unpaused', base); base.startStop(base.playing, true); } }); } // If a hash can not be used to trigger the plugin, then go to start panel base.setCurrentPage(base.gotoHash() || o.startPage, false); // Hide/Show navigation & play/stop controls base.slideControls(false); base.$wrapper.bind('mouseenter mouseleave', function(e){ base.hovered = (e.type === "mouseenter") ? true : false; base.slideControls( base.hovered, false ); }); // Add keyboard navigation $(document).keyup(function(e){ // Stop arrow keys from working when focused on form items if (o.enableKeyboard && base.$wrapper.is('.activeSlider') && !e.target.tagName.match('TEXTAREA|INPUT|SELECT')) { if (!o.vertical && (e.which === 38 || e.which === 40)) { return; } switch (e.which) { case 39: case 40: // right & down arrow base.goForward(); break; case 37: case 38: // left & up arrow base.goBack(); break; } } }); // Fix tabbing through the page, but don't change the view if the link is in view (showMultiple = true) base.$items.delegate('a', 'focus.AnythingSlider', function(e){ var panel = $(this).closest('.panel'), indx = base.$items.index(panel) + base.adj; // index can be -1 in nested sliders - issue #208 base.$items.find('.focusedLink').removeClass('focusedLink'); $(this).addClass('focusedLink'); base.$window.scrollLeft(0); if ( ( indx !== -1 && (indx >= base.currentPage + o.showMultiple || indx < base.currentPage) ) ) { base.gotoPage(indx); e.preventDefault(); } }); // Binds events var triggers = "slideshow_paused slideshow_unpaused slide_init slide_begin slideshow_stop slideshow_start initialized swf_completed".split(" "); $.each("onShowPause onShowUnpause onSlideInit onSlideBegin onShowStop onShowStart onInitialized onSWFComplete".split(" "), function(i,f){ if ($.isFunction(o[f])){ base.$el.bind(triggers[i], o[f]); } }); if ($.isFunction(o.onSlideComplete)){ // Added setTimeout (zero time) to ensure animation is complete... see this bug report: http://bugs.jquery.com/ticket/7157 base.$el.bind('slide_complete', function(){ setTimeout(function(){ o.onSlideComplete(base); }, 0); }); } base.initialized = true; base.$el.trigger('initialized', base); // trigger the slideshow base.startStop(base.playing); }; // called during initialization & to update the slider if a panel is added or deleted base.updateSlider = function(){ // needed for updating the slider base.$el.children('.cloned').remove(); base.$nav.empty(); // set currentPage to 1 in case it was zero - occurs when adding slides after removing them all base.currentPage = base.currentPage || 1; base.$items = base.$el.children(); base.pages = base.$items.length; base.dir = (o.vertical) ? 'top' : 'left'; o.showMultiple = (o.vertical) ? 1 : parseInt(o.showMultiple,10) || 1; // only integers allowed o.navigationSize = (o.navigationSize === false) ? 0 : parseInt(o.navigationSize,10) || 0; if (o.showMultiple > 1) { if (o.showMultiple > base.pages) { o.showMultiple = base.pages; } base.adjustMultiple = (o.infiniteSlides && base.pages > 1) ? 0 : o.showMultiple - 1; base.pages = base.$items.length - base.adjustMultiple; } // Hide navigation & player if there is only one page base.$controls .add(base.$nav) .add(base.$startStop) .add(base.$forward) .add(base.$back)[(base.pages <= 1) ? 'hide' : 'show'](); if (base.pages > 1) { // Build/update navigation tabs base.buildNavigation(); } // Top and tail the list with 'visible' number of items, top has the last section, and tail has the first // This supports the "infinite" scrolling, also ensures any cloned elements don't duplicate an ID // Moved removeAttr before addClass otherwise IE7 ignores the addClass: http://bugs.jquery.com/ticket/9871 if (o.infiniteSlides && base.pages > 1) { base.$el.prepend( base.$items.filter(':last').clone().removeAttr('id').addClass('cloned') ); // Add support for multiple sliders shown at the same time if (o.showMultiple > 1) { base.$el.append( base.$items.filter(':lt(' + o.showMultiple + ')').clone().removeAttr('id').addClass('cloned').addClass('multiple') ); } else { base.$el.append( base.$items.filter(':first').clone().removeAttr('id').addClass('cloned') ); } base.$el.find('.cloned').each(function(){ // disable all focusable elements in cloned panels to prevent shifting the panels by tabbing $(this).find('a,input,textarea,select,button,area').attr('disabled', 'disabled'); $(this).find('[id]').removeAttr('id'); }); } // We just added two items, time to re-cache the list, then get the dimensions of each panel base.$items = base.$el.children().addClass('panel' + (o.vertical ? ' vertical' : '')); base.setDimensions(); // Set the dimensions of each panel if (o.resizeContents) { base.$items.css('width', base.width); base.$wrapper.css('width', base.getDim(base.currentPage)[0]); base.$wrapper.add(base.$items).css('height', base.height); } else { base.$win.load(function(){ base.setDimensions(); }); // set dimensions after all images load } if (base.currentPage > base.pages) { base.currentPage = base.pages; } base.setCurrentPage(base.currentPage, false); base.$nav.find('a').eq(base.currentPage - 1).addClass('cur'); // update current selection }; // Creates the numbered navigation links base.buildNavigation = function() { if (o.buildNavigation && (base.pages > 1)) { var t, $a; base.$items.filter(':not(.cloned)').each(function(i) { var index = i + 1; t = ((index === 1) ? 'first' : '') + ((index === base.pages) ? 'last' : ''); $a = $('').addClass('panel' + index).wrap('
  • '); base.$nav.append($a.parent()); // use $a.parent() so it will add
  • instead of only the to the
      // If a formatter function is present, use it if ($.isFunction(o.navigationFormatter)) { t = o.navigationFormatter(index, $(this)); $a.html('' + t + ''); // Add formatting to title attribute if text is hidden if (parseInt($a.find('span').css('text-indent'),10) < 0) { $a.addClass(o.tooltipClass).attr('title', t); } } else { $a.html('' + index + ''); } $a.bind(o.clickControls, function(e) { if (!base.flag && o.enableNavigation) { // prevent running functions twice (once for click, second time for focusin) base.flag = true; setTimeout(function(){ base.flag = false; }, 100); base.gotoPage(index); if (o.hashTags) { base.setHash(index); } } e.preventDefault(); }); }); // Add navigation tab scrolling - use !! in case someone sets the size to zero if (!!o.navigationSize && o.navigationSize < base.pages) { if (!base.$controls.find('.anythingNavWindow').length){ base.$nav .before('') .after('') .wrap('
      '); } // include half of the left position to include extra width from themes like tabs-light and tabs-dark (still not perfect) base.navWidths = base.$nav.find('li').map(function(){ return $(this).innerWidth() + Math.ceil(parseInt($(this).find('span').css('left'),10)/2 || 0); }).get(); base.navLeft = 1; // add 5 pixels to make sure the tabs don't wrap to the next line base.$nav.width( base.navWidth( 1, base.pages + 1 ) + 5 ); base.$controls.find('.anythingNavWindow') .width( base.navWidth( 1, o.navigationSize + 1 ) ).end() .find('.prev,.next').bind(o.clickControls, function(e) { if (!base.flag) { base.flag = true; setTimeout(function(){ base.flag = false; }, 200); base.navWindow( base.navLeft + o.navigationSize * ( $(this).is('.prev') ? -1 : 1 ) ); } e.preventDefault(); }); } } }; base.navWidth = function(x,y){ var i, s = Math.min(x,y), e = Math.max(x,y), w = 0; for (i = s; i < e; i++) { w += base.navWidths[i-1] || 0; } return w; }; base.navWindow = function(n){ if (!!o.navigationSize && o.navigationSize < base.pages && base.navWidths) { var p = base.pages - o.navigationSize + 1; n = (n <= 1) ? 1 : (n > 1 && n < p) ? n : p; if (n !== base.navLeft) { base.$controls.find('.anythingNavWindow').animate( { scrollLeft: base.navWidth(1, n), width: base.navWidth(n, n + o.navigationSize) }, { queue: false, duration: o.animationTime }); base.navLeft = n; } } }; // Creates the Forward/Backward buttons base.buildNextBackButtons = function() { base.$forward = $('' + o.forwardText + ''); base.$back = $('' + o.backText + ''); // Bind to the forward and back buttons base.$back.bind(o.clickBackArrow, function(e) { // prevent running functions twice (once for click, second time for swipe) if (o.enableArrows && !base.flag) { base.flag = true; setTimeout(function(){ base.flag = false; }, 100); base.goBack(); } e.preventDefault(); }); base.$forward.bind(o.clickForwardArrow, function(e) { // prevent running functions twice (once for click, second time for swipe) if (o.enableArrows && !base.flag) { base.flag = true; setTimeout(function(){ base.flag = false; }, 100); base.goForward(); } e.preventDefault(); }); // using tab to get to arrow links will show they have focus (outline is disabled in css) base.$back.add(base.$forward).find('a').bind('focusin focusout',function(){ $(this).toggleClass('hover'); }); // Append elements to page base.$back.appendTo( (o.appendBackTo !== null && $(o.appendBackTo).length) ? $(o.appendBackTo) : base.$wrapper ); base.$forward.appendTo( (o.appendForwardTo !== null && $(o.appendForwardTo).length) ? $(o.appendForwardTo) : base.$wrapper ); base.$arrowWidth = base.$forward.width(); // assuming the left & right arrows are the same width - used for toggle }; // Creates the Start/Stop button base.buildAutoPlay = function(){ base.$startStop .html('' + (base.playing ? o.stopText : o.startText) + '') .bind(o.clickSlideshow, function(e) { if (o.enableStartStop) { base.startStop(!base.playing); base.makeActive(); if (base.playing && !o.autoPlayDelayed) { base.goForward(true); } } e.preventDefault(); }) // show button has focus while tabbing .bind('focusin focusout',function(){ $(this).toggleClass('hover'); }); }; // Adjust slider dimensions on parent element resize base.checkResize = function(stopTimer){ clearTimeout(base.resizeTimer); base.resizeTimer = setTimeout(function(){ var w = base.$outer.width() - base.outerPad[0], h = (base.$outer[0].tagName === "BODY" ? base.$win.height() : base.$outer.height()) - base.outerPad[1]; // base.width = width of one panel, so multiply by # of panels; outerPad is padding added for arrows. if (base.width * o.showMultiple !== w || base.height !== h) { base.setDimensions(); // adjust panel sizes // make sure page is lined up (use -1 animation time, so we can differeniate it from when animationTime = 0) base.gotoPage(base.currentPage, base.playing, null, -1); } if (typeof(stopTimer) === 'undefined'){ base.checkResize(); } }, 500); }; // Set panel dimensions to either resize content or adjust panel to content base.setDimensions = function(){ var w, h, c, edge = 0, fullsize = { width: '100%', height: '100%' }, // determine panel width pw = (o.showMultiple > 1) ? base.width || base.$window.width()/o.showMultiple : base.$window.width(), winw = base.$win.width(); if (o.expand){ w = base.$outer.width() - base.outerPad[0]; base.height = h = base.$outer.height() - base.outerPad[1]; base.$wrapper.add(base.$window).add(base.$items).css({ width: w, height: h }); base.width = pw = (o.showMultiple > 1) ? w/o.showMultiple : w; } base.$items.each(function(i){ c = $(this).children(); if (o.resizeContents){ // resize panel w = base.width; h = base.height; $(this).css({ width: w, height: h }); if (c.length) { if (c[0].tagName === "EMBED") { c.attr(fullsize); } // needed for IE7; also c.length > 1 in IE7 if (c[0].tagName === "OBJECT") { c.find('embed').attr(fullsize); } // resize panel contents, if solitary (wrapped content or solitary image) if (c.length === 1){ c.css(fullsize); } } } else { // get panel width & height and save it w = $(this).width() || base.width; // if image hasn't finished loading, width will be zero, so set it to base width instead if (c.length === 1 && w >= winw){ w = (c.width() >= winw) ? pw : c.width(); // get width of solitary child c.css('max-width', w); // set max width for all children } $(this).css('width', w); // set width of panel h = (c.length === 1 ? c.outerHeight(true) : $(this).height()); // get height after setting width if (h <= base.outerPad[1]) { h = base.height; } // if height less than the outside padding, then set it to the preset height $(this).css('height', h); } base.panelSize[i] = [w,h,edge]; edge += (o.vertical) ? h : w; }); // Set total width of slider, Note that this is limited to 32766 by Opera - option removed base.$el.css((o.vertical ? 'height' : 'width'), edge); }; // get dimension of multiple panels, as needed base.getDim = function(page){ if (base.pages < 1 || isNaN(page)) { return [ base.width, base.height ]; } // prevent errors when base.panelSize is empty page = (o.infiniteSlides && base.pages > 1) ? page : page - 1; var i, w = base.panelSize[page][0], h = base.panelSize[page][1]; if (o.showMultiple > 1) { for (i=1; i < o.showMultiple; i++) { w += base.panelSize[(page + i)%o.showMultiple][0]; h = Math.max(h, base.panelSize[page + i][1]); } } return [w,h]; }; base.goForward = function(autoplay) { base.gotoPage(base.currentPage + o.changeBy * (o.playRtl ? -1 : 1), autoplay); }; base.goBack = function(autoplay) { base.gotoPage(base.currentPage + o.changeBy * (o.playRtl ? 1 : -1), autoplay); }; base.gotoPage = function(page, autoplay, callback, time) { if (autoplay !== true) { autoplay = false; base.startStop(false); base.makeActive(); } // check if page is an id or class name if (/^[#|.]/.test(page) && $(page).length) { page = $(page).closest('.panel').index() + base.adj; } // rewind effect occurs here when changeBy > 1 if (o.changeBy !== 1){ if (page < 0) { page += base.pages; } if (page > base.pages) { page -= base.pages; } } if (base.pages <= 1) { return; } // prevents animation base.$lastPage = base.$currentPage; if (typeof(page) !== "number") { page = o.startPanel; base.setCurrentPage(page); } // pause YouTube videos before scrolling or prevent change if playing if (autoplay && o.isVideoPlaying(base)) { return; } if (page > base.pages + 1 - base.adj) { page = (!o.infiniteSlides && !o.stopAtEnd) ? 1 : base.pages; } if (page < base.adj ) { page = (!o.infiniteSlides && !o.stopAtEnd) ? base.pages : 1; } base.currentPage = ( page > base.pages ) ? base.pages : ( page < 1 ) ? 1 : base.currentPage; base.$currentPage = base.$items.eq(base.currentPage - base.adj); base.exactPage = page; base.targetPage = (page === 0) ? base.pages - base.adj : (page > base.pages) ? 1 - base.adj : page - base.adj; base.$targetPage = base.$items.eq( base.targetPage ); time = time || o.animationTime; // don't trigger events when time = 1 - to prevent FX from firing multiple times on page resize if (time >= 0) { base.$el.trigger('slide_init', base); } base.slideControls(true, false); // When autoplay isn't passed, we stop the timer if (autoplay !== true) { autoplay = false; } // Stop the slider when we reach the last page, if the option stopAtEnd is set to true if (!autoplay || (o.stopAtEnd && page === base.pages)) { base.startStop(false); } if (time >= 0) { base.$el.trigger('slide_begin', base); } // delay starting slide animation setTimeout(function(d){ // resize slider if content size varies if (!o.resizeContents) { // animating the wrapper resize before the window prevents flickering in Firefox d = base.getDim(page); base.$wrapper.filter(':not(:animated)').animate( // prevent animating a dimension to zero { width: d[0] || base.width, height: d[1] || base.height }, { queue: false, duration: (time < 0 ? 0 : time), easing: o.easing } ); } d = {}; d[base.dir] = -base.panelSize[(o.infiniteSlides && base.pages > 1) ? page : page - 1][2]; // Animate Slider base.$el.filter(':not(:animated)').animate( d, { queue: false, duration: time, easing: o.easing, complete: function(){ base.endAnimation(page, callback, time); } } ); }, parseInt(o.delayBeforeAnimate, 10) || 0); }; base.endAnimation = function(page, callback, time){ if (page === 0) { base.$el.css( base.dir, -base.panelSize[base.pages][2]); page = base.pages; } else if (page > base.pages) { // reset back to start position base.$el.css( base.dir, -base.panelSize[1][2]); page = 1; } base.exactPage = page; base.setCurrentPage(page, false); // Add active panel class base.$items.removeClass('activePage').eq(page - base.adj).addClass('activePage'); if (!base.hovered) { base.slideControls(false); } if (time >= 0) { base.$el.trigger('slide_complete', base); } // callback from external slide control: $('#slider').anythingSlider(4, function(slider){ }) if (typeof callback === 'function') { callback(base); } // Continue slideshow after a delay if (o.autoPlayLocked && !base.playing) { setTimeout(function(){ base.startStop(true); // subtract out slide delay as the slideshow waits that additional time. }, o.resumeDelay - (o.autoPlayDelayed ? o.delay : 0)); } }; base.setCurrentPage = function(page, move) { page = parseInt(page, 10); if (base.pages < 1 || page === 0 || isNaN(page)) { return; } if (page > base.pages + 1 - base.adj) { page = base.pages - base.adj; } if (page < base.adj ) { page = 1; } // Set visual if (o.buildNavigation){ base.$nav .find('.cur').removeClass('cur').end() .find('a').eq(page - 1).addClass('cur'); } // hide/show arrows based on infinite scroll mode if (!o.infiniteSlides && o.stopAtEnd){ base.$wrapper .find('span.forward')[ page === base.pages ? 'addClass' : 'removeClass']('disabled').end() .find('span.back')[ page === 1 ? 'addClass' : 'removeClass']('disabled'); if (page === base.pages && base.playing) { base.startStop(); } } // Only change left if move does not equal false if (!move) { var d = base.getDim(page); base.$wrapper .css({ width: d[0], height: d[1] }) .add(base.$window).scrollLeft(0); // reset in case tabbing changed this scrollLeft - probably overly redundant base.$el.css( base.dir, -base.panelSize[(o.infiniteSlides && base.pages > 1) ? page : page - 1][2] ); } // Update local variable base.currentPage = page; base.$currentPage = base.$items.removeClass('activePage').eq(page - base.adj).addClass('activePage'); }; base.makeActive = function(){ // Set current slider as active so keyboard navigation works properly if (!base.$wrapper.is('.activeSlider')){ $('.activeSlider').removeClass('activeSlider'); base.$wrapper.addClass('activeSlider'); } }; // This method tries to find a hash that matches an ID and panel-X // If either found, it tries to find a matching item // If that is found as well, then it returns the page number base.gotoHash = function(){ var h = base.win.location.hash, i = h.indexOf('&'), n = h.match(base.regex); // test for "/#/" or "/#!/" used by the jquery address plugin - $('#/') breaks jQuery if (n === null && !/^#&/.test(h) && !/#!?\//.test(h)) { // #quote2&panel1-3&panel3-3 h = h.substring(0, (i >= 0 ? i : h.length)); // ensure the element is in the same slider n = ($(h).length && $(h).closest('.anythingBase')[0] === base.el) ? $(h).closest('.panel').index() : null; } else if (n !== null) { // #&panel1-3&panel3-3 n = (o.hashTags) ? parseInt(n[1],10) : null; } return n; }; base.setHash = function(n){ var s = 'panel' + base.runTimes + '-', h = base.win.location.hash; if ( typeof h !== 'undefined' ) { base.win.location.hash = (h.indexOf(s) > 0) ? h.replace(base.regex, s + n) : h + "&" + s + n; } }; // Slide controls (nav and play/stop button up or down) base.slideControls = function(toggle){ var dir = (toggle) ? 'slideDown' : 'slideUp', t1 = (toggle) ? 0 : o.animationTime, t2 = (toggle) ? o.animationTime: 0, op = (toggle) ? 1 : 0, sign = (toggle) ? 0 : 1; // 0 = visible, 1 = hidden if (o.toggleControls) { base.$controls.stop(true,true).delay(t1)[dir](o.animationTime/2).delay(t2); } if (o.buildArrows && o.toggleArrows) { if (!base.hovered && base.playing) { sign = 1; op = 0; } // don't animate arrows during slideshow base.$forward.stop(true,true).delay(t1).animate({ right: sign * base.$arrowWidth, opacity: op }, o.animationTime/2); base.$back.stop(true,true).delay(t1).animate({ left: sign * base.$arrowWidth, opacity: op }, o.animationTime/2); } }; base.clearTimer = function(paused){ // Clear the timer only if it is set if (base.timer) { base.win.clearInterval(base.timer); if (!paused && base.slideshow) { base.$el.trigger('slideshow_stop', base); base.slideshow = false; } } }; // Pass startStop(false) to stop and startStop(true) to play base.startStop = function(playing, paused) { if (playing !== true) { playing = false; } // Default if not supplied is false base.playing = playing; if (playing && !paused) { base.$el.trigger('slideshow_start', base); base.slideshow = true; } // Toggle playing and text if (o.buildStartStop) { base.$startStop.toggleClass('playing', playing).find('span').html( playing ? o.stopText : o.startText ); // add button text to title attribute if it is hidden by text-indent if (parseInt(base.$startStop.find('span').css('text-indent'),10) < 0) { base.$startStop.addClass(o.tooltipClass).attr( 'title', playing ? o.stopText : o.startText ); } } // Pause slideshow while video is playing if (playing){ base.clearTimer(true); // Just in case this was triggered twice in a row base.timer = base.win.setInterval(function() { // prevent autoplay if video is playing if ( !o.isVideoPlaying(base) ) { base.goForward(true); // stop slideshow if resume if false } else if (!o.resumeOnVideoEnd) { base.startStop(); } }, o.delay); } else { base.clearTimer(); } }; // Trigger the initialization base.init(); }; $.anythingSlider.defaults = { // Appearance theme : "default", // Theme name, add the css stylesheet manually expand : false, // If true, the entire slider will expand to fit the parent element resizeContents : true, // If true, solitary images/objects in the panel will expand to fit the viewport vertical : false, // If true, all panels will slide vertically; they slide horizontally otherwise showMultiple : false, // Set this value to a number and it will show that many slides at once easing : "swing", // Anything other than "linear" or "swing" requires the easing plugin or jQuery UI buildArrows : true, // If true, builds the forwards and backwards buttons buildNavigation : true, // If true, builds a list of anchor links to link to each panel buildStartStop : true, // ** If true, builds the start/stop button appendForwardTo : null, // Append forward arrow to a HTML element (jQuery Object, selector or HTMLNode), if not null appendBackTo : null, // Append back arrow to a HTML element (jQuery Object, selector or HTMLNode), if not null appendControlsTo : null, // Append controls (navigation + start-stop) to a HTML element (jQuery Object, selector or HTMLNode), if not null appendNavigationTo : null, // Append navigation buttons to a HTML element (jQuery Object, selector or HTMLNode), if not null appendStartStopTo : null, // Append start-stop button to a HTML element (jQuery Object, selector or HTMLNode), if not null toggleArrows : false, // If true, side navigation arrows will slide out on hovering & hide @ other times toggleControls : false, // if true, slide in controls (navigation + play/stop button) on hover and slide change, hide @ other times startText : "Start", // Start button text stopText : "Stop", // Stop button text forwardText : "»", // Link text used to move the slider forward (hidden by CSS, replaced with arrow image) backText : "«", // Link text used to move the slider back (hidden by CSS, replace with arrow image) tooltipClass : "tooltip", // Class added to navigation & start/stop button (text copied to title if it is hidden by a negative text indent) // Function enableArrows : true, // if false, arrows will be visible, but not clickable. enableNavigation : true, // if false, navigation links will still be visible, but not clickable. enableStartStop : true, // if false, the play/stop button will still be visible, but not clickable. Previously "enablePlay" enableKeyboard : true, // if false, keyboard arrow keys will not work for this slider. // Navigation startPanel : 1, // This sets the initial panel changeBy : 1, // Amount to go forward or back when changing panels. hashTags : true, // Should links change the hashtag in the URL? infiniteSlides : true, // if false, the slider will not wrap & not clone any panels navigationFormatter : null, // Details at the top of the file on this use (advanced use) navigationSize : false, // Set this to the maximum number of visible navigation tabs; false to disable // Slideshow options autoPlay : false, // If true, the slideshow will start running; replaces "startStopped" option autoPlayLocked : false, // If true, user changing slides will not stop the slideshow autoPlayDelayed : false, // If true, starting a slideshow will delay advancing slides; if false, the slider will immediately advance to the next slide when slideshow starts pauseOnHover : true, // If true & the slideshow is active, the slideshow will pause on hover stopAtEnd : false, // If true & the slideshow is active, the slideshow will stop on the last page. This also stops the rewind effect when infiniteSlides is false. playRtl : false, // If true, the slideshow will move right-to-left // Times delay : 3000, // How long between slideshow transitions in AutoPlay mode (in milliseconds) resumeDelay : 15000, // Resume slideshow after user interaction, only if autoplayLocked is true (in milliseconds). animationTime : 600, // How long the slideshow transition takes (in milliseconds) delayBeforeAnimate : 0, // How long to pause slide animation before going to the desired slide (used if you want your "out" FX to show). // Callbacks - removed from options to reduce size - they still work // Interactivity clickForwardArrow : "click", // Event used to activate forward arrow functionality (e.g. add jQuery mobile's "swiperight") clickBackArrow : "click", // Event used to activate back arrow functionality (e.g. add jQuery mobile's "swipeleft") clickControls : "click focusin", // Events used to activate navigation control functionality clickSlideshow : "click", // Event used to activate slideshow play/stop button // Video resumeOnVideoEnd : true, // If true & the slideshow is active & a supported video is playing, it will pause the autoplay until the video is complete resumeOnVisible : true, // If true the video will resume playing (if previously paused, except for YouTube iframe - known issue); if false, the video remains paused. addWmodeToObject : "opaque", // If your slider has an embedded object, the script will automatically add a wmode parameter with this setting isVideoPlaying : function(base){ return false; } // return true if video is playing or false if not - used by video extension }; $.fn.anythingSlider = function(options, callback) { return this.each(function(){ var page, anySlide = $(this).data('AnythingSlider'); // initialize the slider but prevent multiple initializations if ((typeof(options)).match('object|undefined')){ if (!anySlide) { (new $.anythingSlider(this, options)); } else { anySlide.updateSlider(); } // If options is a number, process as an external link to page #: $(element).anythingSlider(#) } else if (/\d/.test(options) && !isNaN(options) && anySlide) { page = (typeof(options) === "number") ? options : parseInt($.trim(options),10); // accepts " 2 " // ignore out of bound pages if ( page >= 1 && page <= anySlide.pages ) { anySlide.gotoPage(page, false, callback); // page #, autoplay, one time callback } // Accept id or class name } else if (/^[#|.]/.test(options) && $(options).length) { anySlide.gotoPage(options, false, callback); } }); }; })(jQuery);function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { createCookie(name,"",-1); } function initHeaderSlideshow() { $('#header-slideshow').anythingSlider( { buildNavigation: false, // If true, buildsa list of anchor links to link to each panel autoPlay: true // This turns off the entire slideshow FUNCTIONALY, not just if it starts running or not } ); $('#header-slideshow').show(); if (readCookie('Weather') == null) { $('#infobanner-popup').fadeIn('slow'); setTimeout("$('#infobanner-popup').fadeOut('slow')", 15000); } } function searchObjects(text) { $.ajax({ url: baseUrl + "/ajax/search", data: { text: text, lang: locale, ubytovanie: ($('#search_options [name=FIND_UBYTOVANIE]').attr('checked'))?true:false, kupaliska: ($('#search_options [name=FIND_KUPALISKA]').attr('checked'))?true:false, lyzovanie: ($('#search_options [name=FIND_LYZOVANIE]').attr('checked'))?true:false, restauracie: ($('#search_options [name=FIND_RESTAURACIE]').attr('checked'))?true:false, kultura: ($('#search_options [name=FIND_KULTURA]').attr('checked'))?true:false }, async: true, success: function(data){ $('#quick_results').html(data); if (data.length > 0) $('#quick_results').show(); } }); } function initSearchForm() { $searchField = $('#header_search_field'); $searchField.bind('focus', function() { $searchField.val(''); $searchField.css('color', '#337'); }); $searchField.bind('focusout', function() { $searchField.val(translate['search'] + '...'); $searchField.css('color', '#fff'); setTimeout("$('#quick_results').hide();", 500); }); $searchField.bind('keyup', function() { var text = $searchField.val(); if (text.length > 2) { searchObjects(text); } else { $('#quick_results').hide(); } }); } function RoutePlanner() { var map = null; var gDirections = null; var nameFrom = null; var nameTo = null; var wayPointNames = new Array(); var wayPoints = new Array(); var wayPointsCount = 0; var eu = new Array('SK', 'CZ', 'PL', 'HU', 'UA', 'AU', 'DE', 'IT', 'NL', 'FI', 'FR'); var geocoder = new GClientGeocoder(); this.initMap = function() { if (GBrowserIsCompatible()) { if (GBrowserIsCompatible()) { geocoder = new GClientGeocoder(); map = new GMap2(document.getElementById("map_canvas")); map.enableScrollWheelZoom(); map.setMapType(G_HYBRID_MAP); map.setUIToDefault(); // inicializacne suradnice var center = new GLatLng(gpsToReal(48, 44, 9), gpsToReal(19, 8, 37.58)); map.setCenter(center, 7); var directionsPanel = document.getElementById('map_directions'); gDirections = new GDirections(map, directionsPanel); GEvent.addListener(gDirections, "load", onLoad); GEvent.addListener(gDirections, "error", error); } } } var onLoad = function(directions) { var spotreba = directions.getDistance().meters / 1000 / 100 * parseFloat($("#planner_fuelCons").val()); var cena = parseFloat($("#planner_fuelPrice").val()); $("#planner_statistics").css('display', 'block'); $("#planner_distance").html(directions.getDistance().html); $("#planner_time").html(directions.getDuration().html); $("#planner_fuel").html((Math.round(spotreba * 100) / 100) + " l"); $("#planner_price").html(Math.round((cena * spotreba * 10000) / 100)/100 + " €"); var route = directions.getPolyline(); $.ajax({ url: baseUrl + "/ajax/route", type: 'POST', dataType: 'xml', data: { route: JSON.stringify(route.j) }, success: function(xmlDoc) { var markersData = xmlDoc.getElementsByTagName('object'); var latlngbounds = new GLatLngBounds(); // hranice oblasti s markermi - kvoli centrovaniu mapy //alert(markersData.length); for (var i = 0; i < markersData.length; i++) { var point = new GLatLng(parseFloat(markersData[i].getAttribute("gps_n")), parseFloat(markersData[i].getAttribute("gps_e"))); var info = markersData[i].childNodes[0].data; // info o markeri v html formate latlngbounds.extend(point); // rozsirim hranicu o novy marker - kvoli centrovaniu mapy var MIcon = new GIcon(G_DEFAULT_ICON); // treba to dedit z default, lebo inak treba vyplnit vela properties MIcon.image = baseUrl + "/public/pictures/markers/"+markersData[i].getAttribute("color")+".png";// image file name //MIcon.shadow = "http://localhost/2010/public/pictures/markers/red.png";// shadow file name MIcon.iconSize = new GSize(20, 32);// width (px) and height (px) //MIcon.shadowSize = new GSize(0, 0);// the shadow's size MIcon.iconAnchor = new GPoint(10, 32);// base of the icon MIcon.iconWindowAnchor = new GPoint(0, 0);// info window base MIcon.setInfoWindowAnchor = new GPoint(0, 0); marker = new GMarker(point, {draggable: false, name: {a:info, b:markersData[i].getAttribute("name"), id:markersData[i].getAttribute("id")}, icon: MIcon}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { this.openInfoWindowHtml(this.name.a); }); GEvent.addListener(marker, "mouseover", function() { //document.getElementById("map_info_obj_" + this.name.id).innerHTML = this.name.b; }); GEvent.addListener(marker, "mouseout", function() { //document.getElementById("map_info_obj_" + object_id).innerHTML = ' '; }); } // alert(map.getBoundsZoomLevel(latlngbounds)); // map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)); } }); } var error = function(data) { statusCode = data.getStatus().code; switch (statusCode) { case G_GEO_TOO_MANY_QUERIES: console.log("The given key has gone over the requests limit in the 24 hour period or has submitted too many requests in too short a period of time. If you're sending multiple requests in parallel or in a tight loop, use a timer or pause in your code to make sure you don't send the requests too quickly."); break; case G_GEO_UNKNOWN_DIRECTIONS: console.log("The GDirections object could not compute directions between the points mentioned in the query. This is usually because there is no route available between the two points, or because we do not have data for routing in that region. "); break; case G_GEO_UNAVAILABLE_ADDRESS: console.log("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons. "); break; case G_GEO_UNKNOWN_ADDRESS: console.log("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + statusCode); break; case G_GEO_SERVER_ERROR: console.log("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + statusCode); break; case G_GEO_MISSING_ADDRESS: case G_GEO_MISSING_QUERY: console.log("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + statusCode); break; case G_GEO_BAD_KEY: console.log("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + statusCode); break; case G_GEO_BAD_REQUEST: console.log("A directions request could not be successfully parsed.\n Error code: " + statusCode); break; default: console.log("An unknown error occurred."); } } function showRoute() { //console.log(wayPointNames); if (wayPoints.length > 1) gDirections.loadFromWaypoints(wayPoints, {locale: locale, avoidHighways: $("#planner_highways").attr('checked') == 'checked', travelMode: G_TRAVEL_MODE_DRIVING}); } this.addThroughPoint = function () { $("#route_through").append('
      '); } function addWayPoint() { geocoder.getLocations(wayPointNames[wayPointsCount], function(data) { var i = 0; while (data.Placemark[i] && data.Placemark[i].AddressDetails.Country) { if (jQuery.inArray(data.Placemark[i].AddressDetails.Country.CountryNameCode, eu) > -1) { break; }; i++; } if (data.Placemark[i]) { wayPoints.push(data.Placemark[i]); } wayPointsCount++; if (wayPointNames[wayPointsCount] == undefined) { showRoute(); } else { addWayPoint() } }); } this.calcRoute = function () { wayPointNames = new Array(); wayPoints = new Array(); wayPointsCount = 0; map.clearOverlays(); /* Nacitam body z formulara */ $points = $("input[name='point']"); /* Zaujimaju ma len tie, ktore maju nejaky nazov */ for (var j = 0;j < $points.size(); j++) { var name = $points.eq(j).val(); if (name != '') wayPointNames.push($points.eq(j).val()); } /* Postupne pridavam body cesty do pola, ak uz nie je ziadny bord, zobrazim cestu */ addWayPoint(); } } var routePlanner = new RoutePlanner();