// Additional jQuery Functions; Minified Code @ 03/2010
jQuery.getAttributes=function(F,C){var F=((typeof F==="string")?jQuery(F)[0]:F[0]),D=0,F=F.attributes,B=F.length,E=["abort","blur","change","click","dblclick","error","focus","keydown","keypress","keyup","load","mousedown","mousemove","mouseout","mouseover","mouseup","reset","resize","select","submit","unload"],A={};for(D;D<B;D++){if(C||!C&&jQuery.inArray(F[D].nodeName.replace(/^on/,""),E)==-1){A[F[D].nodeName]=F[D].nodeValue}}return A}
jQuery.fn.replaceElement=function(replacement,newClass){return this.each(function(){var element=$(this);if(replacement.indexOf('<')!==0)replacement='<'+replacement+'></'+replacement+'>';var elementNew=$(replacement);var attrs=$.getAttributes($(this));for(var a in attrs){elementNew.attr(a,attrs[a]);}
elementNew.html(element.html());if(newClass!==undefined){elementNew.attr("class",elementNew.attr("class")+" "+newClass);}
element.after(elementNew);element.remove();return elementNew;});};jQuery.parseJSONx=function(string){var json=null;try{json=jQuery.parseJSON(string);}catch(e){json=new Object();json.success=(string===true||string.toLowerCase()=='true'||string.toLowerCase()=='success');if(!json.success&&string.toLowerCase().indexOf('true:')===0||string.toLowerCase().indexOf('success:')===0){json.success=trim(string.substr(string.indexOf(':')));}
json.error=(json.success?false:(!string?true:string));}
return json;}
// IDESIGN MEDIA

// JSON.encode; thanks to http://www.rahulsingla.com/blog/2010/05/jquery-encode-decode-arbitrary-objects-to-and-from-json
jQuery.JSON={encode:function(o){if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return this.quoteString(o);if(type=='object'){if(typeof o.toJSON=="function")
return this.encode(o.toJSON());if(o.constructor===Date){var month=o.getUTCMonth()+1;if(month<10)
month='0'+month;var day=o.getUTCDate();if(day<10)
day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)
hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)
minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)
seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)
milli='0'+milli;if(milli<10)
milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+hours+':'
+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array){var ret=[];for(var i=0;i<o.length;i++)
ret.push(this.encode(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=this.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=this.encode(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}},decode:function(src){if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);return eval("("+src+")");},decodeSecure:function(src){if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");},quoteString:function(string){if(string.match(this._escapeable)){return'"'+string.replace(this._escapeable,function(a){var c=this._meta[a];if(typeof c==='string')
return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)
+(c%16).toString(16);})+'"';}
return'"'+string+'"';},_escapeable:/["\\\x00-\x1f\x7f-\x9f]/g,_meta:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'}}
//

