window.AA = {};
AA.UI = {};
AA.Ajax = {};
AA.Data = {};
AA.Utils = {};

AA.Utils.UTF8Encode = function (string) {
    string = string.replace(/\r\n/g, "\n");
    var utftext = "";

    for (var n = 0; n < string.length; n++) {
        var c = string.charCodeAt(n);

        if (c < 128) {
            utftext += String.fromCharCode(c);
        } else if ((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
        } else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
        }
    }

    return utftext;
};

AA.Utils.getCookie = function(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

AA.Utils.setCookie = function(c_name, value, expireDate) {
        var exdate = new Date();
        document.cookie = c_name + "=" + escape(value) +
	    ((expireDate == null) ? "" : ";expires=" + expireDate.toGMTString());
}


AA.Utils.isAuthenticated = function() {    
    return document.cookie.indexOf(".YEDDAAUTH") > -1;
}

// gets the value of the query string
AA.Utils.getQueryVariable = function (variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
  return false;
}


AA.Utils.SetUserTags = function(containerId, callBack) {    
    //Get All Selected tags
    var checkedList = $(".AddTagsContainer input:checked");
    var checkedList = $(".AddTagsContainer input:checked")
    var checkedString = [];
    checkedList.each(function() {

        var tag = $(this).next().html();
        tag = tag.replace(/(^\s|\s$)*/g,"")
        if (tag == ""){
            tag = $(".AddTagsContainer input[type='text']").val();
            
        }else{
            tag = tag.replace("&amp;", "&");
        }
            checkedString.push(tag);

    });

    if (checkedString.length > 0){
        newTags = checkedString.join(",");
        
        //Post the tags for the current user.
        $.ajax({
               beforeSend: function(xhr) {
                    xhr.setRequestHeader("Connection", "close");
               },
               type: "POST",
               url: "/api/internal/pages/userservice.asmx/SetUserTags",
               data: "{'newTags' : '" + newTags + "'}",
               contentType: "application/json; charset=utf-8",
               dataType: "json",                      
               success: function(data){
                    eval(callBack);
               }
        });
    }
}

AA.Utils.Post = {
    SetPublic: function (questionBlogId, postId, controlId, postPublic){
        $.ajax({
            type: "POST",
            url: "/api/internal/pages/QuestionBlogService.asmx/SetPostPublicStatus",
            data: "{'postId':'" + postId + "', 'questionBlogId': '" + questionBlogId + "', 'postPublic': " + postPublic + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                //Change link text and action
                var actionLink = $('#'+controlId);
                if (postPublic){
                    actionLink.html = "Undo";
                }
                actionLink.onClick = "AA.Utils.Post.MakeAnonymous('" + postId + "', '" + questionBlogId + "', " + postPublic + ");";
                
            }
        });
    }
}

AA.Utils.ParseJson = function (response) {
    try {
        return eval("(" + response + ")");
    } catch (e) { return false }

};

AA.UI.ReportAbuse = {
    Init: function(extenderBehaviorId, extenderClientId, panelClientId, qblogClientId, postClientId) {
        window.AA.UI.ReportAbuse.extenderBehaviorId = extenderBehaviorId;
        window.AA.UI.ReportAbuse.extenderClientId = extenderClientId;
        window.AA.UI.ReportAbuse.panelClientId = panelClientId;
        window.AA.UI.ReportAbuse.qblogClientId = qblogClientId;
        window.AA.UI.ReportAbuse.postClientId = postClientId;
    },

    Show: function(questionId, postId) {
        if (typeof (window.yedda_refresh) != 'undefined') {
            window.yedda_refresh = false;
        }
        if (typeof (trackUserActivity) != 'undefined') {
            var sstate = null;
            if (typeof (scenarioState) != 'undefined') {
                sstate = scenarioState;
            }
            trackUserActivity('report_abuse_popup', sstate, null);
        }

        var behavior = $find(window.AA.UI.ReportAbuse.extenderBehaviorId);
        if (behavior)
            behavior.show();
        var fgElement = $get(window.AA.UI.ReportAbuse.extenderClientId + "_foregroundElement");
        if (fgElement) {
            if (fgElement.style.overflow == "hidden")
                fgElement.style.overflow = "visible";
            else
                fgElement.style.overflow = "hidden";
        }

        var shadowElement = $get(window.AA.UI.ReportAbuse.panelClientId + "_DropShadow");
        if (shadowElement) {
            shadowElement.style.backgroundColor = "Transparent";
        }

        var popupElement = $get(window.AA.UI.ReportAbuse.panelClientId);
        if (popupElement) {
            popupElement.style.zIndex = "999999";
        }

        var questionBlogId = $get(window.AA.UI.ReportAbuse.qblogClientId);
        if (questionBlogId) {
            questionBlogId.value = questionId;
        }
        var questionBlogPostId = $get(window.AA.UI.ReportAbuse.postClientId);
        if (questionBlogPostId) {
            questionBlogPostId.value = postId;
        }
    },

    Hide: function() {
        var behavior = $find(window.AA.UI.ReportAbuse.extenderBehaviorId);
        if (behavior) {
            behavior.hide();
        }
    }
};

AA.UI.Search = {
    SearchBoxValue:null,
        
    InitSearchTerm : function() {
        
        AA.UI.Search.SearchBoxValue = $('.SiteSearchTextBox').eq(0).val();
         
        $('.SiteSearchTextBox').each( function(i) { 
                $(this).click( function() {                 
                    this.value = AA.UI.Search.setSearchTerm(this.value); 
                }); 
                
                $(this).blur( function() {
                    this.value = AA.UI.Search.setSearchTerm(this.value); 
                    this.style.color = '#828282' 
                }); 
                
                $(this).focus( function() { 
                    this.style.color = '#000'; 
                }); 
        });
    },
    
    setSearchTerm : function(currentSearchTerm) {
        if (currentSearchTerm == AA.UI.Search.SearchBoxValue) {
            return "";
        } else {
            currentSearchTerm = currentSearchTerm.replace(/^\s*|\s*$/g, '');
            if (currentSearchTerm.length == 0)
                return AA.UI.Search.SearchBoxValue;
            else
                return currentSearchTerm;
        }
    }    
}

function handleErrors(sender, args) {
    if (args.get_error() != undefined) {
        var error = args.get_error();
        if (error) {
            if (error.httpStatusCode == '500' || error.httpStatusCode == '404' || error.name == 'Sys.WebForms.PageRequestManagerTimeoutException') {
                var errorMessage = args.get_error().message;
                args.set_errorHandled(true);
                window.alert(errorMessage);
            } else if (error.httpStatusCode == '0') {
                args.set_errorHandled(true);
            }
        }
    }
}

function handleBeforePostBack(obj, e) {
    var eventTargetServerId = $get("aspnetForm").__EVENTTARGET.value;
    _Yedda_Internal_HandleBeforePostback(eventTargetServerId);
}

function handleAfterPostBack(obj, e) {
    _Yedda_Internal_HandleAfterPostback();
    if (typeof (_Yadda_Internal_UnsignedHome_AfterPostback) != "undefined")
        _Yadda_Internal_UnsignedHome_AfterPostback();
}

if (typeof(Sys) != 'undefined' && Sys != null && Sys.WebForms != null && Sys.WebForms.PageRequestManager != null) {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm != null) {
        prm.add_beginRequest(handleBeforePostBack);
        prm.add_endRequest(handleAfterPostBack);
        prm.add_endRequest(handleErrors);
    }
};
/*!
 * jQuery JavaScript Library v1.4.2
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(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,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
/*
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 03/01/2009 +r14
 */
(function($) {
$.fn.jqm=function(o){
var p={
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
if(p.trigger)$(this).jqmAddTrigger(p.trigger);
});};

$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};

$.jqm = {
hash:{},
open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
 if(c.modal) {if(!A[0])L('bind');A.push(s);}
 else if(c.overlay > 0)h.w.jqmAddClose(o);
 else o=F;

 h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
 if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}

 if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
 else if(cc)h.w.jqmAddClose($(cc,h.w));

 if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
 (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
},
close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
 if(A[0]){A.pop();if(!A[0])L('unbind');}
 if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
 if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
},
params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
 if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
})(jQuery);

/*
 * Metadata - jQuery plugin for parsing metadata from elements
 *
 * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.metadata.js 3640 2007-10-11 18:34:38Z pmclanahan $
 *
 */

/**
 * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
 * in the JSON will become a property of the element itself.
 *
 * There are four supported types of metadata storage:
 *
 *   attr:  Inside an attribute. The name parameter indicates *which* attribute.
 *          
 *   class: Inside the class attribute, wrapped in curly braces: { }
 *   
 *   elem:  Inside a child element (e.g. a script tag). The
 *          name parameter indicates *which* element.
 *   html5: Values are stored in data-* attributes.
 *          
 * The metadata for an element is loaded the first time the element is accessed via jQuery.
 *
 * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
 * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
 * 
 * @name $.metadata.setType
 *
 * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("class")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from the class attribute
 * 
 * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("attr", "data")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a "data" attribute
 * 
 * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
 * @before $.metadata.setType("elem", "script")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a nested script element
 * 
 * @example <p id="one" class="some_class" data-item_id="1" data-item_label="Label">This is a p</p>
 * @before $.metadata.setType("html5")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a series of data-* attributes
 *
 * @param String type The encoding type
 * @param String name The name of the attribute to be used to get metadata (optional)
 * @cat Plugins/Metadata
 * @descr Sets the type of encoding to be used when loading metadata for the first time
 * @type undefined
 * @see metadata()
 */

(function($) {

$.extend({
  metadata : {
    defaults : {
      type: 'class',
      name: 'metadata',
      cre: /({.*})/,
      single: 'metadata'
    },
    setType: function( type, name ){
      this.defaults.type = type;
      this.defaults.name = name;
    },
    get: function( elem, opts ){
      var settings = $.extend({},this.defaults,opts);
      // check for empty string in single property
      if ( !settings.single.length ) settings.single = 'metadata';
      
      var data = $.data(elem, settings.single);
      // returned cached data if it already exists
      if ( data ) return data;
      
      data = "{}";
      
      var getData = function(data) {
        if(typeof data != "string") return data;
        
        if( data.indexOf('{') < 0 ) {
          data = eval("(" + data + ")");
        }
      }
      
      var getObject = function(data) {
        if(typeof data != "string") return data;
        
        data = eval("(" + data + ")");
        return data;
      }
      
      if ( settings.type == "html5" ) {
        var object = {};
        $( elem.attributes ).each(function() {
          var name = this.nodeName;
          if(name.match(/^data-/)) name = name.replace(/^data-/, '');
          else return true;
          object[name] = getObject(this.nodeValue);
        });
      } else {
        if ( settings.type == "class" ) {
          var m = settings.cre.exec( elem.className );
          if ( m )
            data = m[1];
        } else if ( settings.type == "elem" ) {
          if( !elem.getElementsByTagName ) return;
          var e = elem.getElementsByTagName(settings.name);
          if ( e.length )
            data = $.trim(e[0].innerHTML);
        } else if ( elem.getAttribute != undefined ) {
          var attr = elem.getAttribute( settings.name );
          if ( attr )
            data = attr;
        }
        object = getObject(data.indexOf("{") < 0 ? "{" + data + "}" : data);
      }
      
      $.data( elem, settings.single, object );
      return object;
    }
  }
});

/**
 * Returns the metadata object for the first member of the jQuery object.
 *
 * @name metadata
 * @descr Returns element's metadata object
 * @param Object opts An object contianing settings to override the defaults
 * @type jQuery
 * @cat Plugins/Metadata
 */
$.fn.metadata = function( opts ){
  return $.metadata.get( this[0], opts );
};

})(jQuery);
/*!
 * Auto Complete 5.1
 * April 13, 2010
 * Corey Hart @ http://www.codenothing.com
 */ 
(function ($, window, undefined) {

	// Expose autoComplete to the jQuery chain
	$.fn.autoComplete = function () {
		// Force array of arguments
		var args = Slice.call(arguments),
			self = this,
			first = args.shift(),
			isMethod = typeof first === 'string',
			handler, el;

		// Deep namespacing is not supported in jQuery, a mistake I made in v4.1
		if (isMethod) {
			first = first.replace(rdot, '-');
		}

		// Allow for passing array of arguments, or multiple arguments
		// Eg: .autoComplete('trigger', [arg1, arg2, arg3...]) or .autoComplete('trigger', arg1, arg2, arg3...)
		// Mainly to allow for .autoComplete('trigger', arguments) to work
		// Note*: Some triggers pass an array as the first param, so check against that first
		args = (AutoComplete.arrayMethods[first] === TRUE && $.isArray(args[0]) && $.isArray(args[0][0])) ||
			(args.length === 1 && $.isArray(args[0])) ?
				args[0] : args;

		// Check method against handlers that need to use triggerHandler 
		handler = isMethod && (AutoComplete.handlerMethods[first] === -1 || args.length < (AutoComplete.handlerMethods[first] || 0)) ?
			'triggerHandler' : 'trigger';

		return isMethod ?
			self[handler]('autoComplete.' + first, args) :

		// Allow passing a jquery event special object {from $.Event()}
			first && first.preventDefault !== undefined ? self.trigger(first, args) :

		// Initiate the autocomplete on each element (Only takes a single argument, the options object)
			self.each(function () {
				if ($(el = this).data('autoComplete') !== TRUE) {
					AutoCompleteFunction(el, first);
				}
			});
	};

	// bgiframe is needed to fix z-index problem for IE6 users.
	$.fn.bgiframe = $.fn.bgiframe ? $.fn.bgiframe : $.fn.bgIframe ? $.fn.bgIframe : function () {
		// For applications that don't have bgiframe plugin installed, create a useless 
		// function that doesn't break the chain
		return this;
	};
	var firstTime = true;
	// Allows for single event binding to document and forms associated with the autoComplete inputs
	// by deferring the event to the input in focus
	function setup($input, inputIndex) {
		if (setup.flag !== TRUE) {
			setup.flag = TRUE;
			rootjQuery.bind('click.autoComplete', function (event) {
				AutoComplete.getFocus(TRUE).trigger('autoComplete.document-click', [event]);
			});
		}

		var $form = $input.closest('form'), formList = $form.data('ac-inputs') || {}, $el;

		formList[inputIndex] = TRUE;
		$form.data('ac-inputs', formList);

		if ($form.data('autoComplete') !== TRUE) {
			$form.data('autoComplete', TRUE).bind('submit.autoComplete', function (event) {
				return ($el = AutoComplete.getFocus(TRUE)).length ?
					$el.triggerHandler('autoComplete.form-submit', [event, this]) :
					TRUE;
			});
		}
	}

	// Removes the single events attached to the document and respective input form
	function teardown($input, inputIndex) {
		AutoComplete.remove(inputIndex);

		if (setup.flag === TRUE && AutoComplete.length === 0) {
			setup.flag = FALSE;
			rootjQuery.unbind('click.autoComplete');
		}

		var $form = $input.closest('form'), formList = $form.data('ac-inputs') || {}, i;

		formList[inputIndex] = FALSE;
		for (i in formList) {
			if (formList.hasOwnProperty(i) && formList[i] === TRUE) {
				return;
			}
		}

		$form.unbind('submit.autoComplete');
	}

	// Default function for adding all supply items to the list
	function allSupply(event, ui) {
		if (!$.isArray(ui.supply)) {
			return [];
		}

		for (var i = -1, l = ui.supply.length, ret = [], entry; ++i < l; ) {
			entry = ui.supply[i];
			entry = entry && entry.value ? entry : { value: entry };
			ret.push(entry);
		}

		return ret;
	}



	// Internals
	var 
	// Munging
	TRUE = true,
	FALSE = false,

	// Copy of the slice prototype
	Slice = Array.prototype.slice,

	// Make a copy of the document element for caching
	rootjQuery = $(window.document),

	// Also make a copy of an empty jQuery set for fast referencing
	emptyjQuery = $(),

	// regex's
	rdot = /\./,

	// Opera and Firefox on Mac need to use the keypress event to track holding of
	// a key down and not releasing
	keypress = window.opera || (/macintosh/i.test(window.navigator.userAgent) && $.browser.mozilla),

	// Event flag that gets passed around
	ExpandoFlag = 'autoComplete_' + $.expando,

	// Make a local copy of the key codes used throughout the plugin
	KEY = {
		backspace: 8,
		tab: 9,
		enter: 13,
		shift: 16,
		space: 32,
		pageup: 33,
		pagedown: 34,
		left: 37,
		up: 38,
		right: 39,
		down: 40
	},

	// Attach global aspects to jQuery itself
	AutoComplete = $.autoComplete = {
		// Autocomplete Version
		version: '5.1',

		// Index Counter
		counter: 0,

		// Length of stack
		length: 0,

		// Storage of elements
		stack: {},

		// jQuery object versions of the storage elements
		jqStack: {},

		// Storage order of uid's
		order: [],

		// Global access to elements in use
		hasFocus: FALSE,

		// Expose the used keycodes
		keys: KEY,

		// Methods whose first argument may contain an array
		arrayMethods: {
			'button-supply': TRUE,
			'direct-supply': TRUE
		},

		// Defines the maximum number of arguments that can be passed for using
		// triggerHandler method instead of trigger. Passing -1 forces triggerHandler
		// no matter the number of arguments
		handlerMethods: {
			'option': 2
		},

		// Events triggered whenever one of the autoComplete
		// input's come into focus or blur out.
		focus: undefined,
		blur: undefined,

		// Allow access to jquery cached object versions of the elements
		getFocus: function (jqStack) {
			return !AutoComplete.order[0] ? jqStack ? emptyjQuery : undefined :
				jqStack ? AutoComplete.jqStack[AutoComplete.order[0]] :
				AutoComplete.stack[AutoComplete.order[0]];
		},

		getPrevious: function (jqStack) {
			// Removing elements cause some indexs on the order stack
			// to become undefined, so loop until one is found
			for (var i = 0, l = AutoComplete.order.length; ++i < l; ) {
				if (AutoComplete.order[i]) {
					return jqStack ?
						AutoComplete.jqStack[AutoComplete.order[i]] :
						AutoComplete.stack[AutoComplete.order[i]];
				}
			}

			return jqStack ? emptyjQuery : undefined;
		},

		remove: function (n) {
			for (var i = -1, l = AutoComplete.order.length; ++i < l; ) {
				if (AutoComplete.order[i] === n) {
					AutoComplete.order[i] = undefined;
				}
			}

			AutoComplete.length--;
			delete AutoComplete.stack[n];
		},

		// Returns full stack in jQuery form
		getAll: function () {
			for (var i = -1, l = AutoComplete.counter, stack = []; ++i < l; ) {
				if (AutoComplete.stack[i]) {
					stack.push(AutoComplete.stack[i]);
				}
			}
			return $(stack);
		},

		defaults: {
			// To smooth upgrade process to 5.x, set backwardsCompatible to true
			backwardsCompatible: FALSE,
			// Server Script Path
			ajax: 'ajax.php',
			ajaxCache: $.ajaxSettings.cache,
			// Data Configuration
			dataSupply: [],
			dataFn: undefined,
			formatSupply: undefined,
			// Drop List CSS
			list: 'auto-complete-list',
			rollover: 'auto-complete-list-rollover',
			width: undefined, // Defined as inputs width when extended (can be overridden with this global/options/meta)
			striped: undefined,
			maxHeight: undefined,
			bgiframe: undefined,
			newList: FALSE,
			// Post Data
			postVar: 'value',
			postData: {},
			postFormat: undefined,
			// Limitations
			minChars: 1,
			maxItems: -1,
			maxRequests: 0,
			maxRequestsDeep: FALSE,
			requestType: 'POST',
			// Input
			inputControl: undefined,
			autoFill: FALSE,
			nonInput: [KEY.shift, KEY.left, KEY.right],
			multiple: FALSE,
			multipleSeparator: ' ',
			// Events
			onBlur: undefined,
			onFocus: undefined,
			onHide: undefined,
			onLoad: undefined,
			onMaxRequest: undefined,
			onRollover: undefined,
			onSelect: undefined,
			onShow: undefined,
			onListFormat: undefined,
			onSubmit: undefined,
			spinner: undefined,
			preventEnterSubmit: TRUE,
			delay: 0,
			// Caching Options
			useCache: TRUE,
			cacheLimit: 50,
			redirectOnSelect: FALSE,
			formatResults: undefined,
			widthRatio: 0,
			abortOld: TRUE,
			startConnectionOnFocus: FALSE,
			suggestType: ''
		}
	},

	// Autocomplete function
	AutoCompleteFunction = function (self, options) {
		// Start with counters as they are used within declarations
		AutoComplete.length++;
		AutoComplete.counter++;
		// Input specific vars
		var $input = $(self).attr('autocomplete', 'off'),
		// Data object stored on 'autoComplete' data namespace of input
			ACData = {},
		// Track every event triggered
			LastEvent = {},
		// String of current input value
			inputval = '',
		// Holds the current list
			currentList = [],
		// Place holder for all list elements
			$elems = { length: 0 },
		// Place holder for the list element in focus
			$li,
		// View and heights for scrolling
			view, ulHeight, liHeight, liPerView,
		// Hardcoded value for ul visiblity
			ulOpen = FALSE,
		// Timer for delay
			timeid,
		// Ajax requests holder
			xhr,
		// li element in focus, and its data
			liFocus = -1, liData,
		// Fast referencing for multiple selections
			separator,
		// Index of current input
			inputIndex = AutoComplete.counter,
		// Number of requests made
			requests = 0,
		// Internal Per Input Cache
			cache = {
				length: 0,
				val: undefined,
				list: {}
			},

		// Merge defaults with passed options and metadata options
			settings = $.extend(
				{ width: $input.outerWidth() - 2 },
				AutoComplete.defaults,
				options || {},
				$.metadata ? $input.metadata() : {}
			),

		// Create the drop list (Use an existing one if possible)
			$ul = !settings.newList && rootjQuery.find('ul.' + settings.list)[0] ?
				rootjQuery.find('ul.' + settings.list).eq(0).bgiframe(settings.bgiframe) :
				$('<ul/>').appendTo('body').addClass(settings.list).bgiframe(settings.bgiframe).hide().data('ac-selfmade', TRUE);


		// Start Binding
		$input.data('autoComplete', ACData = {
			index: inputIndex,
			hasFocus: FALSE,
			active: TRUE,
			settings: settings,
			initialSettings: $.extend(TRUE, {}, settings)
		});

		// IE catches the enter key only on keypress/keyup, so add a helper
		// to track that event if needed
		if ($.browser.msie) {
			$input.bind('keypress.autoComplete', function (event) {
				if (!ACData.active) {
					return TRUE;
				}

				if (event.keyCode === KEY.enter) {
					var enter = TRUE;

					// See entertracking on main key(press/down) event for explanation
					if ($li && $li.hasClass(settings.rollover)) {
						enter = settings.preventEnterSubmit && ulOpen ? FALSE : TRUE;
						select(event);
					}
					else if (ulOpen) {
						$ul.hide(event);
					}

					return enter;
				}
			});
		}


		// Opera && firefox on Mac use keypress to track holding down of key, 
		// while everybody else uses keydown for same functionality
		$input.bind(keypress ? 'keypress.autoComplete' : 'keydown.autoComplete', function (event) {
			// If autoComplete has been disabled, prevent input events
			if (!ACData.active) {
				return TRUE;
			}

			// Track last event and store code for munging
			var key = (LastEvent = event).keyCode, enter = FALSE;


			// Tab Key
			if (key === KEY.tab && ulOpen) {
				select(event);
			}
			// Enter Key
			else if (key === KEY.enter) {
				// When tracking whether to submit the form or not, we have
				// to ensure that the user is actually selecting an element from the drop
				// down list. It no element is selected, then hide the list and track form
				// submission. If an element is selected, then track for submission first, 
				// then hide the list.
				enter = TRUE;
				if ($li && $li.hasClass(settings.rollover)) {
					enter = settings.preventEnterSubmit && ulOpen ? FALSE : TRUE;
					select(event);
				}
				else if (ulOpen) {
					$ul.hide(event);
				}
			}
			// Up Arrow
			else if (key === KEY.up && ulOpen) {
				if (liFocus > 0) {
					liFocus--;
					up(event);
				} else {
					liFocus = -1;
					$input.val(inputval);
					$ul.hide(event);
				}
			}
			// Down Arrow
			else if (key === KEY.down && ulOpen) {
				if (liFocus < $elems.length - 1) {
					liFocus++;
					down(event);
				}
			}
			// Page Up
			else if (key === KEY.pageup && ulOpen) {
				if (liFocus > 0) {
					liFocus -= liPerView;

					if (liFocus < 0) {
						liFocus = 0;
					}

					up(event);
				}
			}
			// Page Down
			else if (key === KEY.pagedown && ulOpen) {
				if (liFocus < $elems.length - 1) {
					liFocus += liPerView;

					if (liFocus > $elems.length - 1) {
						liFocus = $elems.length - 1;
					}

					down(event);
				}
			}
			// Check for non input values defined by user
			else if (settings.nonInput && $.inArray(key, settings.nonInput) > -1) {
				$ul.html('').hide(event);
				enter = TRUE;
			}
			// Everything else is considered possible input, so
			// return before keyup prevention flag is set
			else {
				return TRUE;
			}

			// Prevent autoComplete keyup event's from triggering by
			// attaching a flag to the last event
			LastEvent['keydown_' + ExpandoFlag] = TRUE;
			return enter;
		})
		.bind({
			'keyup.autoComplete': function (event) {
				// If autoComplete has been disabled or keyup prevention 
				// flag has be set, prevent input events
				if (!ACData.active || LastEvent['keydown_' + ExpandoFlag]) {
					return TRUE;
				}

				// If no special operations were run on keydown,
				// allow for regular text searching
				inputval = $input.val();

				// prevent javascript injection
				if (inputval) {
					var patt1 = new RegExp(/<script(.|\n)*?>(.|\n)*?<\/script>/gi);
					inputval = inputval.replace(patt1, '');
				}
				var key = (LastEvent = event).keyCode, val = separator ? inputval.split(separator).pop() : inputval;

				// Still check to make sure 'enter' wasn't pressed
				if (key != KEY.enter) {

					// Caching key value
					cache.val = settings.inputControl === undefined ? val :
						settings.inputControl.apply(self, settings.backwardsCompatible ?
							[val, key, $ul, event, settings, cache] :
							[event, {
								val: val,
								key: key,
								settings: settings,
								cache: cache,
								ul: $ul
							}]
						);

					// Only send request if character length passes
					if (cache.val.length >= settings.minChars) {
						sendRequest(event, settings, cache, (key === KEY.backspace || key === KEY.space));
					}
					// Remove list on backspace of small string
					else if (key == KEY.backspace) {
						$ul.html('').hide(event);
					}
				}
			},

			'blur.autoComplete': function (event) {
				// If autoComplete has been disabled or the drop list
				// is still open, prevent input events
				if (!ACData.active || ulOpen) {
					return TRUE;
				}

				// Only push undefined index onto order stack
				// if not already there (in-case multiple blur events occur)
				if (AutoComplete.order[0] !== undefined) {
					AutoComplete.order.unshift(undefined);
				}

				// Expose focus
				AutoComplete.hasFocus = FALSE;
				ACData.hasFocus = FALSE;
				liFocus = -1;
				$ul.hide(LastEvent = event);

				// Trigger both the global and element specific blur events
				if (AutoComplete.blur) {
					AutoComplete.blur.call(self, event, { settings: settings, cache: cache, ul: $ul });
				}

				if (settings.onBlur) {
					settings.onBlur.apply(self, settings.backwardsCompatible ?
						[inputval, $ul, event, settings, cache] : [event, {
							val: inputval,
							settings: settings,
							cache: cache,
							ul: $ul
						}]
					);
				}
			},

			'focus.autoComplete': function (event, flag) {
				// Prevent inner focus events if caused by autoComplete inner functionality
				// Also, because IE triggers focus AND closes the drop list before form submission,
				// keep the select flag by not reseting the last event
				if (!ACData.active || (ACData.hasFocus && flag === ExpandoFlag) || LastEvent['enter_' + ExpandoFlag]) {
					return TRUE;
				}

				if (inputIndex !== $ul.data('ac-input-index')) {
					$ul.html('').hide(event);
				}

				// Overwrite undefined index pushed on by the blur event
				if (AutoComplete.order[0] === undefined) {
					if (AutoComplete.order[1] === inputIndex) {
						AutoComplete.order.shift();
					} else {
						AutoComplete.order[0] = inputIndex;
					}
				}
				else if (AutoComplete.order[0] != inputIndex && AutoComplete.order[1] != inputIndex) {
					AutoComplete.order.unshift(inputIndex);
				}

				if (AutoComplete.defaults.cacheLimit !== -1 && AutoComplete.order.length > AutoComplete.defaults.cacheLimit) {
					AutoComplete.order.pop();
				}

				// Expose focus
				AutoComplete.hasFocus = TRUE;
				ACData.hasFocus = TRUE;
				LastEvent = event;

				// Trigger both the global and element specific focus events
				if (AutoComplete.focus) {
					AutoComplete.focus.call(self, event, { settings: settings, cache: cache, ul: $ul });
				}

				if (settings.onFocus) {
					if (settings.startConnectionOnFocus == 'true') {
						sendRequest(event, settings, cache, false);
					} else {
						settings.onFocus.apply(self,
						    settings.backwardsCompatible ? [$ul, event, settings, cache] : [event, {
						    	settings: settings,
						    	cache: cache,
						    	ul: $ul
						    }]
					    );
					}
				}
			},

			/**
			* Autocomplete Custom Methods (Extensions off autoComplete event)
			*/
			// Catches document click events from the global scope
			'autoComplete.document-click': function (e, event) {
				if (ACData.active && ulOpen &&
				// Double check the event timestamps to ensure there isn't a delayed reaction from a button
					(!LastEvent || event.timeStamp - LastEvent.timeStamp > 200) &&
				// Check the target after all other checks are passed (less processing)
					$(event.target).closest('ul').data('ac-input-index') !== inputIndex) {
					$ul.hide(LastEvent = event);
					$input.blur();
				}
			},

			// Catches form submission ( so only one event is attached to the form )
			'autoComplete.form-submit': function (e, event, form) {
				if (!ACData.active) {
					return TRUE;
				}

				LastEvent = event;

				// Because IE triggers focus AND closes the drop list before form submission,
				// tracking enter is set on the keydown event
				return settings.preventEnterSubmit && (ulOpen || LastEvent['enter_' + ExpandoFlag]) ? FALSE :
					settings.onSubmit === undefined ? TRUE :
					settings.onSubmit.call(self, event, { form: form, settings: settings, cache: cache, ul: $ul });
			},

			// Catch mouseovers on the drop down element
			'autoComplete.ul-mouseenter': function (e, event, li) {
				if ($li) {
					$li.removeClass(settings.rollover);
				}

				$li = $(li).addClass(settings.rollover);
				liFocus = $elems.index(li);
				liData = currentList[liFocus];
				view = $ul.scrollTop() + ulHeight;
				LastEvent = event;

				if (settings.onRollover) {
					settings.onRollover.apply(self, settings.backwardsCompatible ?
						[liData, $li, $ul, event, settings, cache] :
						[event, {
							data: liData,
							li: $li,
							settings: settings,
							cache: cache,
							ul: $ul
						}]
					);
				}
			},

			// Catch click events on the drop down
			'autoComplete.ul-click': function (e, event) {
				// Refocus the input box and pass flag to prevent inner focus events
				$input.trigger('focus', [ExpandoFlag]);

				// Check against separator for input value
				$input.val(inputval === separator ?
					inputval.substr(0, inputval.length - inputval.split(separator).pop().length) + liData.value + separator :
					liData.value
				);

				$ul.hide(LastEvent = event);
				autoFill();

				if (settings.onSelect) {
					settings.onSelect.apply(self, settings.backwardsCompatible ?
						[liData, $li, $ul, event, settings, cache] :
						[event, {
							data: liData,
							li: $li,
							settings: settings,
							cache: cache,
							ul: $ul
						}]
					);
				}
			},

			// Catch click events on the drop down
			'autoComplete.ul-redirect': function (e, event) {
				redirect(liData, event);
			},

			// Allow for change of settings at any point
			'autoComplete.settings': function (event, newSettings) {
				if (!ACData.active) {
					return TRUE;
				}

				var ret, $el;
				LastEvent = event;

				// Give access to current settings and cache
				if ($.isFunction(newSettings)) {
					ret = newSettings.apply(self, settings.backwardsCompatible ?
						[settings, cache, $ul, event] : [event, { settings: settings, cache: cache, ul: $ul}]
					);

					// Allow for extending of settings/cache based off function return values
					if ($.isArray(ret) && ret[0] !== undefined) {
						$.extend(TRUE, settings, ret[0] || settings);
						$.extend(TRUE, cache, ret[1] || cache);
					}
				} else {
					$.extend(TRUE, settings, newSettings || {});
				}

				// Change the drop down if dev want's a differen't class attached
				$ul = !settings.newList && $ul.hasClass(settings.list) ? $ul :
					!settings.newList && ($el = rootjQuery.find('ul.' + settings.list).eq(0)).length ?
						$el.bgiframe(settings.bgiframe) :
						$('<ul/>').appendTo('body').addClass(settings.list)
							.bgiframe(settings.bgiframe).hide().data('ac-selfmade', TRUE);

				// Custom drop list modifications
				newUl();

				// Change case here so it doesn't have to be done on every request
				settings.requestType = settings.requestType.toUpperCase();

				// Local copy of the seperator for faster referencing
				separator = settings.multiple ? settings.multipleSeparator : undefined;

				// Just to be sure, reset the settings object into the data storage
				ACData.settings = settings;
			},

			// Clears the Cache & requests (requests can be blocked from clearing)
			'autoComplete.flush': function (event, cacheOnly) {
				if (!ACData.active) {
					return TRUE;
				}

				if (!cacheOnly) {
					requests = 0;
				}

				cache = { length: 0, val: undefined, list: {} };
				LastEvent = event;
			},

			// External button trigger for ajax requests
			'autoComplete.button-ajax': function (event, postData, cacheName) {
				if (!ACData.active) {
					return TRUE;
				}

				if (typeof postData === 'string') {
					cacheName = postData;
					postData = {};
				}

				// Save off the last event before triggering focus on the off-chance
				// it is needed by a secondary focus event
				LastEvent = event;

				// Refocus the input box, but pass flag to prevent inner focus events
				$input.trigger('focus', [ExpandoFlag]);

				// If no cache name is given, supply a non-common word
				cache.val = cacheName || 'button-ajax_' + ExpandoFlag;

				return sendRequest(
					event,
					$.extend(TRUE, {}, settings, { maxItems: -1, postData: postData || {} }),
					cache
				);
			},

			// External button trigger for supplied data
			'autoComplete.button-supply': function (event, data, cacheName) {
				if (!ACData.active) {
					return TRUE;
				}

				if (typeof data === 'string') {
					cacheName = data;
					data = undefined;
				}

				// Again, save off event before triggering focus
				LastEvent = event;

				// Refocus the input box and pass flag to prevent inner focus events
				$input.trigger('focus', [ExpandoFlag]);

				// If no cache name is given, supply a non-common word
				cache.val = cacheName || 'button-supply_' + ExpandoFlag;

				// If no data is supplied, use data in settings
				data = $.isArray(data) ? data : settings.dataSupply;

				return sendRequest(
					event,
					$.extend(TRUE, {}, settings, { maxItems: -1, dataSupply: data, formatSupply: allSupply }),
					cache
				);
			},

			// Supply list directly into the result function
			'autoComplete.direct-supply': function (event, data, cacheName) {
				if (!ACData.active) {
					return TRUE;
				}

				if (typeof data === 'string') {
					cacheName = data;
					data = undefined;
				}

				// Again, save off event before triggering focus
				LastEvent = event;

				// Refocus the input box and pass flag to prevent inner focus events
				$input.trigger('focus', [ExpandoFlag]);

				// If no cache name is given, supply a non-common word
				cache.val = cacheName || 'direct-supply_' + ExpandoFlag;

				// If no data is supplied, use data in settings
				data = $.isArray(data) && data.length ? data : settings.dataSupply;

				// Load the results directly into the results function bypassing request holdups
				return loadResults(
					event,
					data,
					$.extend(TRUE, {}, settings, { maxItems: -1, dataSupply: data, formatSupply: allSupply }),
					cache
				);
			},

			// Triggering autocomplete programatically
			'autoComplete.search': function (event, value) {
				if (!ACData.active) {
					return TRUE;
				}

				cache.val = value || '';
				return sendRequest(LastEvent = event, settings, cache);
			},

			// Add jquery-ui like option access
			'autoComplete.option': function (event, name, value) {
				if (!ACData.active) {
					return TRUE;
				}

				LastEvent = event;
				switch (Slice.call(arguments).length) {
					case 3:
						settings[name] = value;
						return value;
					case 2:
						return name === 'ul' ? $ul :
							name === 'cache' ? cache :
							name === 'xhr' ? xhr :
							name === 'input' ? $input :
							settings[name] || undefined;
					default:
						return settings;
				}
			},

			// Add enabling event (only applicable after disable)
			'autoComplete.enable': function (event) {
				ACData.active = TRUE;
				LastEvent = event;
			},

			// Add disable event
			'autoComplete.disable': function (event) {
				ACData.active = FALSE;
				$ul.html('').hide(LastEvent = event);
			},

			// Add a destruction function
			'autoComplete.destroy': function (event) {
				var list = $ul.html('').hide(LastEvent = event).data('ac-inputs') || {}, i;

				// Remove all autoComplete specific data and events
				$input.removeData('autoComplete').unbind('.autoComplete autoComplete');

				// Remove form/drop list/document event catchers if possible
				teardown($input, inputIndex);

				// Remove input from the drop down element of inputs
				list[inputIndex] = undefined;

				// Go through the drop down element and see if any other inputs are attached to it
				for (i in list) {
					if (list.hasOwnProperty(i) && list[i] === TRUE) {
						return LastEvent;
					}
				}

				// Remove the element from the DOM if self created
				if ($ul.data('ac-selfmade') === TRUE) {
					$ul.remove();
				}
				// Kill all data associated with autoComplete for a cleaned drop down element
				else {
					$ul.removeData('autoComplete').removeData('ac-input-index').removeData('ac-inputs');
				}
			}
		});

		// Ajax/Cache Request
		function sendRequest(event, settings, cache, backSpace, timeout) {
			// Merely setting max requests still allows usage of cache and supplied data,
			// this 'Deep' option prevents those scenarios if needed
			if (settings.maxRequestsDeep === true && requests >= settings.maxRequests) {
				return FALSE;
			}

			if (settings.spinner) {
				settings.spinner.call(self, event, { active: TRUE, settings: settings, cache: cache, ul: $ul });
			}

			if (timeid) {
				timeid = clearTimeout(timeid);
			}

			// Call send request again with timeout flag if on delay
			if (settings.delay > 0 && timeout === undefined) {
				timeid = window.setTimeout(function () {
					sendRequest(event, settings, cache, backSpace, TRUE);
				}, settings.delay);
				return timeid;
			}
			// Abort previous request incase it's still running
			if (settings.abortOld == 'true') {
				if (xhr) {
					xhr.abort();
				}
			}

			// Load from cache if possible
			if (settings.useCache && $.isArray(cache.list[cache.val])) {
				return loadResults(event, cache.list[cache.val], settings, cache, backSpace);
			}

			// Use user supplied data when defined
			if (settings.dataSupply.length) {
				return userSuppliedData(event, settings, cache, backSpace);
			}

			// Check Max requests first before sending request
			if (settings.maxRequests && ++requests >= settings.maxRequests) {
				$ul.html('').hide(event);

				if (settings.spinner) {
					settings.spinner.call(self, event, { active: FALSE, settings: settings, cache: cache, ul: $ul });
				}

				if (settings.onMaxRequest && requests === settings.maxRequests) {
					return settings.onMaxRequest.apply(self, settings.backwardsCompatible ?
						[cache.val, $ul, event, inputval, settings, cache] :
						[event, {
							search: cache.val,
							val: inputval,
							settings: settings,
							cache: cache,
							ul: $ul
						}]
					);
				}

				return FALSE;
			}
			settings.postData[settings.postVar] = cache.val;

			var postParams = undefined;
			var specificData = undefined;
			if (settings.postFormat) {
				specificData = settings.postFormat.call(self, event, {
					data: settings.postData,
					search: cache.val,
					val: inputval,
					settings: settings,
					cache: cache,
					ul: $ul
				});
				postParams = {};
				postParams[specificData['key']] = specificData['value'];
				if (specificData.t1) {
					postParams.t1 = specificData.t1;
				}
				if (specificData.t2) {
					postParams.t2 = specificData.t2;
				}
				suggestType = specificData['key'];
			}

			var url = settings.ajax;
			settings.postData['ft'] = firstTime;
			if (firstTime) {
				firstTime = false;
				try {
					_gaq.push(['_trackEvent', 'AutoComplete', 'Open:' + suggestType]);
				} catch (a) { }
			} else {
				if (!cache.val) {
					return;
				}
			}

			xhr = $.ajax({
				type: settings.requestType,
				url: url,
				cache: settings.ajaxCache,
				dataType: 'json',

				// Send personalised data
				data: postParams ? postParams : settings.postData,

				success: function (list) {
					if (settings.formatResults) {
						list = settings.formatResults(inputval, list);
					}
					loadResults(event, list, settings, cache, backSpace);
					if (firstTime) {
						firstTime = false;
					}
					try {
						_gaq.push(['_trackEvent', 'AutoComplete', 'Show:' + suggestType]);
					} catch (a) { }
				},

				error: function () {
					$ul.html('').hide(event);
					if (settings.spinner) {
						settings.spinner.call(self, event, { active: FALSE, settings: settings, cache: cache, ul: $ul });
					}
				}
			});

			return xhr;
		}

		// Parse User Supplied Data
		function userSuppliedData(event, settings, cache, backSpace) {
			var list = [], args = [],
				fn = $.isFunction(settings.dataFn),
				regex = fn ? undefined : new RegExp('^' + cache.val, 'i'),
				items = 0, entry, i = -1, l = settings.dataSupply.length;

			if (settings.formatSupply) {
				list = settings.formatSupply.call(self, event, {
					search: cache.val,
					supply: settings.dataSupply,
					settings: settings,
					cache: cache,
					ul: $ul
				});
			} else {
				for (; ++i < l; ) {
					// Force object wrapper for entry
					entry = settings.dataSupply[i];
					entry = entry && typeof entry.value === 'string' ? entry : { value: entry };

					// Setup arguments for dataFn in a backwards compatible way if needed
					args = settings.backwardsCompatible ?
						[cache.val, entry.value, list, i, settings.dataSupply, $ul, event, settings, cache] :
						[event, {
							search: cache.val,
							entry: entry.value,
							list: list,
							i: i,
							supply: settings.dataSupply,
							settings: settings,
							cache: cache,
							ul: $ul
						}];

					// If user supplied function, use that, otherwise test with default regex
					if ((fn && settings.dataFn.apply(self, args)) || (!fn && entry.value.match(regex))) {
						// Reduce browser load by breaking on limit if it exists
						if (settings.maxItems > -1 && ++items > settings.maxItems) {
							break;
						}
						list.push(entry);
					}
				}
			}

			// Use normal load functionality
			return loadResults(event, list, settings, cache, backSpace);
		}

		function redirect(liData, event) {
			autoFill(liData.input ? liData.input : liData.value);
			$ul.hide(event);
			// redirect to the data
			//timout is needed for the Google analytics to complete
			// if we clicked on the 'search for X' link
			if (liData.value.indexOf("/search?") > 0) {
				try {
					_gaq.push(['_trackEvent', 'AutoComplete', 'Search_Click:' + suggestType]);
				} catch (a) { }
			} else {
				try {
					_gaq.push(['_trackEvent', 'AutoComplete', 'Result_Click:' + suggestType]);
				} catch (a) { }
			}
			setTimeout(function () { window.location = liData.value }, 200);
		}

		// Key element Selection
		function select(event) {
			// Ensure the select function only gets fired when list of open
			if (ulOpen) {
				if (settings.redirectOnSelect) {
					redirect(liData);
				}
				if (settings.onSelect) {
					settings.onSelect.apply(self, settings.backwardsCompatible ?
						[liData, $li, $ul, event, settings, cache] :
						[event, {
							data: liData,
							li: $li,
							settings: settings,
							cache: cache,
							ul: $ul
						}]
					);
				}
				autoFill();
				inputval = $input.val();

				// Because IE triggers focus AND closes the drop list before form submission
				// attach a flag on 'enter' selection
				if (LastEvent.type === 'keydown') {
					LastEvent['enter_' + ExpandoFlag] = TRUE;
				}

				$ul.hide(event);
			}

			$li = undefined;
		}

		// Key direction up
		function up(event) {
			if ($li) {
				$li.removeClass(settings.rollover);
			}

			$ul.show(event);
			$li = $elems.eq(liFocus).addClass(settings.rollover);
			liData = currentList[liFocus];

			if (!$li.length || !liData) {
				return FALSE;
			}

			autoFill(liData.input ? liData.input : liData.value);
			if (settings.onRollover) {
				settings.onRollover.apply(self, settings.backwardsCompatible ?
					[liData, $li, $ul, event, settings, cache] :
					[event, {
						data: liData,
						li: $li,
						settings: settings,
						cache: cache,
						ul: $ul
					}]
				);
			}

			// Scrolling
			var scroll = liFocus * liHeight;
			if (scroll < view - ulHeight) {
				view = scroll + ulHeight;
				$ul.scrollTop(scroll);
			}
		}

		// Key direction down
		function down(event) {
			if ($li) {
				$li.removeClass(settings.rollover);
			}

			$ul.show(event);
			$li = $elems.eq(liFocus).addClass(settings.rollover);
			liData = currentList[liFocus];

			if (!$li.length || !liData) {
				return FALSE;
			}

			autoFill(liData.input ? liData.input : liData.value);

			// Scrolling
			var scroll = (liFocus + 1) * liHeight;
			if (scroll > view) {
				$ul.scrollTop((view = scroll) - ulHeight);
			}

			if (settings.onRollover) {
				settings.onRollover.apply(self, settings.backwardsCompatible ?
					[liData, $li, $ul, event, settings, cache] : [event, {
						data: liData,
						li: $li,
						settings: settings,
						cache: cache,
						ul: $ul
					}]
				);
			}
		}

		// Attach new show/hide functionality to only the ul object (so not to infect all of jQuery),
		// And also attach event handlers if not already done so
		function newUl() {
			var hide = $ul.hide, show = $ul.show, list = $ul.data('ac-inputs') || {};

			if (!$ul[ExpandoFlag]) {
				$ul.hide = function (event, speed, callback) {
					if (settings.onHide && ulOpen) {
						settings.onHide.call(self, event, { ul: $ul, settings: settings, cache: cache });
					}

					ulOpen = FALSE;
					return hide.call($ul, speed, callback);
				};

				$ul.show = function (event, speed, callback) {
					if (settings.onShow && !ulOpen) {
						settings.onShow.call(self, event, { ul: $ul, settings: settings, cache: cache });
					}

					ulOpen = TRUE;
					return show.call($ul, speed, callback);
				};

				// A flag must be attached to the $ul cached object
				$ul[ExpandoFlag] = TRUE;
			}

			// Attach global handlers for event delegation (So there is no more loss time in unbinding and rebinding)
			if ($ul.data('autoComplete') !== TRUE) {
				if (settings.redirectOnSelect) {
					$ul.data('autoComplete', TRUE)
				    .delegate('li', 'mouseenter.autoComplete', function (event) {
				    	AutoComplete.getFocus(TRUE).trigger('autoComplete.ul-mouseenter', [event, this]);
				    })
				    .bind('click.autoComplete', function (event) {
				    	AutoComplete.getFocus(TRUE).trigger('autoComplete.ul-redirect', [event]);
				    	return FALSE;
				    });
				} else {
					$ul.data('autoComplete', TRUE)
				    .delegate('li', 'mouseenter.autoComplete', function (event) {
				    	AutoComplete.getFocus(TRUE).trigger('autoComplete.ul-mouseenter', [event, this]);
				    })
				    .bind('click.autoComplete', function (event) {
				    	AutoComplete.getFocus(TRUE).trigger('autoComplete.ul-click', [event]);
				    	return FALSE;
				    });
				}

			}

			list[inputIndex] = TRUE;
			$ul.data('ac-inputs', list);
		}

		// Auto-fill the input
		// Credit to Jörn Zaefferer @ http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
		// and http://www.pengoworks.com/workshop/jquery/autocomplete.htm for this functionality
		function autoFill(val) {
			var start, end, range;

			// Set starting and ending points based on values
			if (val === undefined || val === '') {
				start = end = $input.val().length;
			} else {
				if (separator) {
					val = inputval.substr(0, inputval.length - inputval.split(separator).pop().length) + val + separator;
				}

				start = inputval.length;
				end = val.length;
				$input.val(val);
			}

			// Create selection if allowed
			if (!settings.autoFill || start > end) {
				return FALSE;
			}
			else if (self.createTextRange) {
				range = self.createTextRange();
				if (val === undefined) {
					range.move('character', start);
					range.select();
				} else {
					range.collapse(TRUE);
					range.moveStart('character', start);
					range.moveEnd('character', end);
					range.select();
				}
			}
			else if (self.setSelectionRange) {
				self.setSelectionRange(start, end);
			}
			else if (self.selectionStart) {
				self.selectionStart = start;
				self.selectionEnd = end;
			}
		}

		// List Functionality
		function loadResults(event, list, settings, cache, backSpace) {
			// Allow another level of result handling
			currentList = settings.onLoad ?
				settings.onLoad.call(self, event, { list: list, settings: settings, cache: cache, ul: $ul }) : list;

			// Tell spinner function to stop if set
			if (settings.spinner) {
				settings.spinner.call(self, event, { active: FALSE, settings: settings, cache: cache, ul: $ul });
			}

			// Store results into the cache if allowed
			if (settings.useCache && !$.isArray(cache.list[cache.val])) {
				cache.length++;
				cache.list[cache.val] = list;

				// Clear cache if necessary
				if (settings.cacheLimit !== -1 && cache.length > settings.cacheLimit) {
					cache.list = {};
					cache.length = 0;
				}
			}

			// Ensure there is a list
			if (!currentList || currentList.length < 1) {
				return $ul.html('').hide(event);
			}

			// Refocus list element
			liFocus = -1;

			// Initialize Vars together (save bytes)
			var offset = $input.offset(), // Input position
				container = [], // Container for list elements
				items = 0, i = -1, striped = FALSE, length = currentList.length; // Loop Items

			if (settings.onListFormat) {
				settings.onListFormat.call(self, event, { list: currentList, settings: settings, cache: cache, ul: $ul });
			}
			else {
				// Push items onto container
				for (; ++i < length; ) {
					if (currentList[i].value) {
						if (settings.maxItems > -1 && ++items > settings.maxItems) {
							break;
						}

						container.push(
							settings.striped && striped ? '<li class="' + settings.striped + '">' : '<li>',
							currentList[i].display || currentList[i].value,
							'</li>'
						);

						striped = !striped;
					}
				}
				$ul.html(container.join(''));
			}

			// Cache the list items
			$elems = $ul.children('li');

			// Autofill input with first entry
			if (settings.autoFill && !backSpace) {
				liFocus = 0;
				liData = currentList[0];
				autoFill(liData.value);
				$li = $elems.eq(0).addClass(settings.rollover);
			}

			// Align the drop down element
			$ul.data('ac-input-index', inputIndex).scrollTop(0).css({
				top: offset.top + $input.outerHeight(),
				left: offset.left,
				width: settings.width * (settings.widthRatio ? settings.widthRatio : 1)
			})
			// The drop list has to be shown before maxHeight can be configured
			.show(event);

			// Log li height for less computation
			liHeight = $elems.eq(0).outerHeight();

			// If Max Height specified, control it
			if (settings.maxHeight) {
				$ul.css({
					height: liHeight * $elems.length > settings.maxHeight ? settings.maxHeight : 'auto',
					overflow: 'auto'
				});
			}

			// ulHeight gets manipulated, so assign to viewport seperately 
			// so referencing conflicts don't override viewport
			ulHeight = $ul.outerHeight();
			view = ulHeight;

			// Number of elements per viewport
			liPerView = liHeight === 0 ? 0 : Math.floor(view / liHeight);

			// Include amount of time it took to load the list
			// and run modifications
			LastEvent.timeStamp = (new Date()).getTime();
		}

		// Custom modifications to the drop down element
		newUl();

		// Do case change on initialization so it's not run on every request
		settings.requestType = settings.requestType.toUpperCase();

		// Local quick copy of the seperator (so we don't have to run this check every time)
		separator = settings.multiple ? settings.multipleSeparator : undefined;

		// Expose copies of both the input element and the cached jQuery version
		AutoComplete.stack[inputIndex] = self;
		AutoComplete.jqStack[inputIndex] = $input;

		// Form and Document event attachment
		setup($input, inputIndex);
	};

})(jQuery, window || this);

(function() {
    var morelinks = $(".MoreLinksHover");
    morelinks.mouseenter(function() { $("#MoreLinksContainer").show() });
    morelinks.mouseleave(function() { $("#MoreLinksContainer").hide(); });       
})();
AA.SignPopUpControl = {
    _signDialogId: "#signdialog",
    _signFrameId: "#signframe",
    _successHash: '#ysi_success',
    _closeHash: '#ysi_close',
    _controlMarker: '.aashouldsign',
    _popuptimer: null,
    _callBack: null,
    _trigger: null,
    _frameWasInit: false,
    _checkInterval: 100,

    _patchonclick: function (id) {
        var e = jQuery(id);
        var c = e.attr('onclick');        
        if (c) {
            e.removeAttr('onclick');
            eval('window.yedda_signpopup_e_' + e.attr('id') + ' = c;');
        }
    },

    _handle_original_element: function (e) {
        if (e) {
            var afterSignAction = $(e).attr('afterSignAction');
            if (afterSignAction != null) {
                eval(afterSignAction);
            }
            else if (e.nodeName == 'A') {
                window.location = e.href;
            } else if (e.nodeName == 'INPUT') {

                e.click();
            }
        }
    },

    is_facebook: function () {
        var result = false;
        if (typeof (window.AA) != 'undefined' && typeof (window.AA.facebook) != 'undefined') {
            if (window.AA.facebook) {
                result = true;
            }
        }

        return result;
    },

    is_authenticated: function () {
        var result = false;
        if (typeof (window.AA) != 'undefined' && typeof (window.AA.authenticated) != 'undefined') {
            if (window.AA.authenticated) {
                result = true;
            }

            if (typeof (window.AA.consented) != 'undefined') {
                result = window.AA.consented;
            }
        }

        return result;
    },

    handle_click: function (t) {
        var e = jQuery(t);
        e.unbind('click');
        var original_onclick_name = 'yedda_signpopup_e_' + e.attr('id');
        var original_onclick = eval('window.' + original_onclick_name);
        if (original_onclick) {
            var r = original_onclick();
            if (typeof (r) == 'undefined' || r == true) {
                AA.SignPopUpControl._handle_original_element(t);
            }
        } else {
            AA.SignPopUpControl._handle_original_element(t);
        }
    },

    // Checks if we finished the sign process in the IFRAME.
    // If we did, it will try to continue with the original's element function (i.e. button press or link navigate).
    // If nothing happens, the timer will get reset and continue to do its check
    handler: function (h) {
        var tryAgain = true;
        var frameId = this._signFrameId;
        var trigger = this._trigger;
        var frame = jQuery(frameId);
        var skipIt = AA.SignPopUpControl.is_authenticated() && AA.SignPopUpControl.is_facebook();
        var hash = null;
        var protocol = null;
        if (frame && frame.length > 0 && frame[0].contentWindow.location) {
            try {
                hash = frame[0].contentWindow.location.hash;
                protocol = frame[0].contentWindow.location.protocol;
            }
            catch (err) {
                var s = err;
            }
            if (skipIt || hash == AA.SignPopUpControl._successHash || hash == AA.SignPopUpControl._closeHash || protocol == "about:") {
                tryAgain = false;
                clearTimeout(AA.SignPopUpControl._popuptimer);
                jQuery(AA.SignPopUpControl._signDialogId).jqmHide();
                if (skipIt || hash == AA.SignPopUpControl._successHash) {
                    if (typeof (trigger) != 'undefined' && trigger) {
                        window.AA.authenticated = true;
                        AA.SignPopUpControl.handle_click(trigger);
                    }
                    else if (this._callBack != null) {
                        eval(this._callBack);
                    }
                    if (typeof (trackUserActivity) != 'undefined') {
                        var src = AA.Utils.getCookie('ysrc');
                        trackUserActivity('signPopUpCompleat', 'popupClose', 'src=' + src);
                    }

                }
            }
        }

        if (tryAgain) {
            AA.SignPopUpControl._popuptimer = setTimeout('AA.SignPopUpControl.handler()', AA.SignPopUpControl._checkInterval);
        }
    },

    onHide: function (h) {
        h.w.hide();
        h.o.remove();
        var frame = jQuery(AA.SignPopUpControl._signFrameId);
        if (frame && frame.length > 0 && frame[0].contentWindow.location) {
            if (frame[0].contentWindow.location.hash == AA.SignPopUpControl._closeHash) {
                var url = AA.SignPopUpControl.signUrl;
                if (typeof (AA.SignPopUpControl.lastUrlUsed) != 'undefined' && AA.SignPopUpControl.signUrl != '') {
                    url = AA.SignPopUpControl.lastUrlUsed;
                }
                frame[0].contentWindow.location = AA.SignPopUpControl.lastUrlUsed;
            }
        }                
    },

    // Used as the onshow call back of the jModal
    onshow: function (h) {
        
        //jQuery(AA.SignPopUpControl._signDialogId).css("top", $(window).scrollTop() + 100);

        if (!AA.SignPopUpControl.is_authenticated() || !AA.SignPopUpControl.is_facebook()) {
            AA.SignPopUpControl._trigger = h.t;
            AA.SignPopUpControl._popuptimer = setTimeout('AA.SignPopUpControl.handler()', 500);

            var action = null;
            var e = jQuery(h.t);
            var action = e.attr('action');
            if (action != null) {
                var frame = jQuery(AA.SignPopUpControl._signFrameId);
                if (frame && frame.length > 0) {
                    try {
                        var element = null;
                        try {
                            element = window.frames['signframe'].document.getElementById('triggerAction');
                        }
                        catch (err) {
                            element = null;
                        }
                        if (element != null) {
                            element.value = "#triggerAction=" + action;
                        } else {
                            var src = frame[0].src;
                            var newUrl = src;
                            var hashindex = newUrl.indexOf("#");
                            if (hashindex > 0) {
                                newUrl = newUrl.substring(0, hashindex);

                            }
                            newUrl = newUrl + "#triggerAction=" + action;
                            frame[0].src = newUrl;
                        }
                    } catch (err) {

                    }
                }
            }

            if (typeof (_gaq) != 'undefined') {
                if (!AA.SignPopUpControl.is_authenticated()) {
                    if (action == null) {
                        action = 'show';
                    }
                    if (!window.AA.consented) {
                        // Show signin popup
                        _gaq.push(['_trackEvent', 'SignInPopUp', action])
                    }
                    else {
                        // Show signin popup
                        _gaq.push(['_trackEvent', 'ConsentPopUp', action])
                    }
                } else {
                    // Show signin popup
                    _gaq.push(['_trackEvent', 'FacebookPopUp', 'Show'])
                }
            }

            jQuery(AA.SignPopUpControl._signDialogId).css("display","block");
            
            var frame = jQuery(AA.SignPopUpControl._signFrameId);
            if (frame && frame.length > 0) {
                try {
                    var inputs = frame[0].contentWindow.document.getElementsByTagName('input');
                    if (inputs) {
                        for (var i = 0; i < inputs.length; i++) {
                            if (inputs[i].type == 'text') {
                                inputs[i].focus();
                                break;
                            }
                        }
                    }
                } catch (err) {

                }
            }

            h.w.show();
        } else {
            h.o.remove();
            h.w.hide();
            AA.SignPopUpControl.handle_click(h.t);
        }
    },

    showSignUp: function () {
        if (typeof (_gaq) != 'undefined') { _gaq.push(['_trackEvent', 'SignUpPopUp', 'Show']) }
        AA.SignPopUpControl.show(AA.SignPopUpControl.signUpUrl, null);
    },

    show: function (url, callback) {
        var sf = $('#signframe');
        if (sf.length > 0) {
            AA.SignPopUpControl._frameWasInit = true;
            sf[0].src = "";
            sf[0].src = url;
        }
        this._callBack = callback;
        setTimeout('jQuery( AA.SignPopUpControl._signDialogId).jqmShow()', 100);
    },

    hookUp: function () {
        
        var signdialog = jQuery(this._signDialogId);
        signdialog.jqm({ modal: true, onShow: this.onshow, onHide: this.onHide });
        signdialog.jqmAddTrigger(this._controlMarker);
        var x = jQuery(this._controlMarker);
        jQuery.each(x, function () {
            var id = jQuery(this).attr('id');            
            if (id != null && id != "") {
                var eid = '#' + id;
                AA.SignPopUpControl._patchonclick(eid);
            }
        });
    },

    hookUpInit: function () {
        var signdialog = jQuery(this._signDialogId);        
        signdialog.jqm({ modal: true, onShow: this.onshow, onHide: this.onHide });
        signdialog.jqmAddTrigger("nothingToHock");
    },

    Init: function (signUrl, consentUrl, signUpUrl, hook) {
        AA.SignPopUpControl.signUrl = signUrl;
        AA.SignPopUpControl.signUpUrl = signUpUrl;
        AA.SignPopUpControl.consentUrl = consentUrl;

        var url = signUrl;
        if (document.cookie.indexOf(".YEDDAAUTH") > -1 && document.cookie.indexOf("ynotac=1") > -1) {
            url = consentUrl;
        }

        AA.SignPopUpControl.lastUrlUsed = url;
        if (!hook) {
            setTimeout("AA.SignPopUpControl.hookUpInit();", 0);
        }
        window.AA.facebook = hook;

        if (document.cookie.indexOf("ynotac=1") > -1 || document.cookie.indexOf(".YEDDAAUTH") == -1) {
            if (hook) {
                setTimeout("var sf = $('#signframe'); if (sf.length > 0 && !AA.SignPopUpControl._frameWasInit) sf[0].src = '" + url + "';", 750);
                setTimeout("AA.SignPopUpControl.hookUp();", 0);
            }
        } else {
            // set authenticated only in case we need to hook (for facebook)
            window.AA.authenticated = true;
        }
    }
};
// source: http://4umi.com/web/javascript/array.htm
Array.prototype.indexOf=function(n){for(var i=0;i<this.length;i++){if(this[i]===n){return i;}}return -1;}
Array.prototype.lastIndexOf=function(n){var i=this.length;while(i--){if(this[i]===n){return i;}}return -1;}
Array.prototype.forEach=function(f){var i=this.length,j,l=this.length;for(i=0;i<l;i++){if((j=this[i])){f(j);}}};
Array.prototype.insert=function(i,v){if(i>=0){var a=this.slice(),b=a.splice(i);a[i]=value;return a.concat(b);}}
Array.prototype.shuffle=function(){var i=this.length,j,t;while(i--){j=Math.floor((i+1)*Math.random());t=arr[i];arr[i]=arr[j];arr[j]=t;}}
Array.prototype.unique=function(){var a=[],i;this.sort();for(i=0;i<this.length;i++){if(this[i]!==this[i+1]){a[a.length]=this[i];}}return a;}
if(typeof Array.prototype.concat==='undefined'){Array.prototype.concat=function(a){for(var i=0,b=this.copy();i<a.length;i++){b[b.length]=a[i];}return b;};}
if(typeof Array.prototype.copy==='undefined'){Array.prototype.copy=function(a){var a=[],i=this.length;while(i--){a[i]=(typeof this[i].copy!=='undefined')?this[i].copy():this[i];}return a;};}
if(typeof Array.prototype.pop==='undefined'){Array.prototype.pop=function(){var b=this[this.length-1];this.length--;return b;};}
if(typeof Array.prototype.push==='undefined'){Array.prototype.push=function(){for(var i=0,b=this.length,a=arguments;i<a.length;i++){this[b+i]=a[i];}return this.length;};}
if(typeof Array.prototype.shift==='undefined'){Array.prototype.shift=function(){for(var i=0,b=this[0];i<this.length-1;i++){this[i]=this[i+1];}this.length--;return b;};}
if(typeof Array.prototype.slice==='undefined'){Array.prototype.slice=function(a,c){var i=0,b,d=[];if(!c){c=this.length;}if(c<0){c=this.length+c;}if(a<0){a=this.length-a;}if(c<a){b=a;a=c;c=b;}for(i;i<c-a;i++){d[i]=this[a+i];}return d;};}
if(typeof Array.prototype.splice==='undefined'){Array.prototype.splice=function(a,c){var i=0,e=arguments,d=this.copy(),f=a;if(!c){c=this.length-a;}for(i;i<e.length-2;i++){this[a+i]=e[i+2];}for(a;a<this.length-c;a++){this[a+e.length-2]=d[a-c];}this.length-=c-e.length+2;return d.slice(f,f+c);};}
if(typeof Array.prototype.unshift==='undefined'){Array.prototype.unshift=function(a){this.reverse();var b=this.push(a);this.reverse();return b;};}

// JScript File

function fbs_click() {
	u=location.href;
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}


var m_textElement;
var m_imageTextTemplate;
var m_oEmbedUriField;
var m_htmlElement;
var m_contextLinkElement;

function FilloEmbedHtmlByContextUri(contextUri, questionBlogId, contextLinkElement)
{
    m_contextLinkElement = contextLinkElement;
    // send request to check if oembed exsits and if do get the oembed uri.
    Yedda.Api.Internal.oEmbed.oEmbedService.FilloEmbedHtmlByContextUri(contextUri, questionBlogId, FilloEmbedHtmlByContextUri_callback);    
}

function FilloEmbedHtmlByContextUri_callback(res)
{
    if ((res != null) && (res != ""))
    {
        // update the html uri hidden field
        contextLinkElement = $get(m_contextLinkElement);
        if (contextLinkElement != null)
        {
            var contextText = contextLinkElement.innerHTML;
            if (res[2] != null)
                contextText = res[2];
            contextLinkElement.innerHTML = res[2] + contextText;               
        }
    }
}


function FilloEmbedHtml(oEmbedEndPoint, questionBlogId, htmlElement, contextLinkElement)
{
    m_htmlElement = htmlElement;
    m_contextLinkElement = contextLinkElement;
    // send request to check if oembed exsits and if do get the oembed uri.
    Yedda.Api.Internal.oEmbed.oEmbedService.GetoEmbedData(oEmbedEndPoint, questionBlogId, GetoEmbedHtml_callback);    
}

function GetoEmbedHtml_callback(res)
{
    /*if ((res != null) && (res != ""))
    {
        // update the html uri hidden field
        htmlElement = $get(m_htmlElement);
        if (htmlElement != null)
            htmlElement.innerHTML = res[0];
       
        contextLinkElement = $get(m_contextLinkElement);
        if (contextLinkElement != null)
        {
            var contextText = contextLinkElement.innerHTML;
            if (res[2] != null)
                contextText = res[2];
            contextLinkElement.innerHTML = res[1] + contextText;               
        }
               
    }*/
}

var yedda_track_prefix = 'Track_';
var yedda_track_pattern = new RegExp(yedda_track_prefix + "[^\\s]+", "g");

var virtual_pageview_tracker = null;

function yedda_oltrack(jqElement) {                       
    var hasService = false;
    if (typeof(Yedda) != 'undefined' && typeof(Yedda.Api) != 'undefined' && typeof(Yedda.Api.Internal) != 'undefined' && typeof(Yedda.Api.Internal.Tracking) != 'undefined' && typeof(Yedda.Api.Internal.Tracking.OutgoingLinksTracker) != 'undefined') {
        hasService = true;
    }        
        
    if (hasService) {    
        
        var yedda_track_outgoinglinks = Yedda.Api.Internal.Tracking.OutgoingLinksTracker.Track;
        
        var host = window.location.host;
        var selector = null;
        if (jqElement == null) {
            selector = $('a');
        } else {
            selector = jqElement;
        }
        selector.each(function () {
            var obj = $(this);

            var linkClass = obj.attr("class");
            var linkHostname = obj[0].hostname;

            if (linkClass != null && typeof (linkClass) != 'undefined') {
                var matches = linkClass.match(yedda_track_pattern);

                if (matches != null || linkHostname != host) {

                    obj.bind('mousedown', function (event) {
                        var classesCombined = "";

                        if (matches != null) {
                            classesCombined = matches.join("|").replace(yedda_track_prefix, "");
                        }

                        try {
                            href = obj.attr("href");
                            if (href == null || href == "") {
                                href = window.location.href;
                            }
                            yedda_track_outgoinglinks(window.location.href, href, classesCombined);
                            if (classesCombined != "") {
                                if (typeof (_gaq) != 'undefined') {
                                    var label = 'Click';
                                    if (classesCombined.indexOf('#') > 0) {
                                        var mySplitResult = classesCombined.split("#");
                                        classesCombined = mySplitResult[0];
                                        label = mySplitResult[1];
                                    }
                                    _gaq.push(['_trackEvent', classesCombined, label])
                                }

                                if (virtual_pageview_tracker == null) {
                                    if (typeof (_gat) != 'undefined') {
                                        var tracker = _gat._getTrackerByName("vpt");
                                        if (tracker != null) {
                                            virtual_pageview_tracker = tracker;
                                        }
                                    }
                                }

                                if (virtual_pageview_tracker) {
                                    if (typeof (AA) != 'undefined' && typeof (AA.pageName) != 'undefined') {
                                        var pageName = AA.pageName;
                                        if (pageName && pageName != '') {
                                            var vUrl = "/" + pageName + "/" + classesCombined;
                                            virtual_pageview_tracker._trackPageview(vUrl);
                                        }
                                    }
                                }
                            }
                        } catch (e) { }
                    });
                }
            }
        });    
    }
}
// JScript File
//OK
function setHeader(PageDate) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        window.AA.authenticated = true;
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
        document.getElementById("singedIn").style.display = "";
        document.getElementById("notSingedIn").style.display = "none";
        document.getElementById("currentUser").href = PageDate.CurrentUser.UserProfileUrl;
        document.getElementById("currentUser").innerHTML = PageDate.CurrentUser.UserName;

        document.getElementById("HeaderSettings").style.display = "";
        document.getElementById("HeaderAnswer").style.display = "";
        document.getElementById("HeaderMyActivity").style.display = "";
        document.getElementById("HeaderMyContacts").style.display = "";
        document.getElementById("LinkMyContacts").href = PageDate.CurrentUser.UserContactsUrl;
        if (PageDate.CurrentUser.IsAdmin == "True") {
            document.getElementById("HeaderAdmin").style.display = "";
            document.getElementById("useDataAdmin").style.display = "";
            document.getElementById("LinkAdmin").href = PageDate.CurrentUser.AdminUrl;
        }
        if (PageDate.CurrentUser.IsFacebookConnected == "True") {
            var headerFBLogin = $("#headerFBLogin");
            if (headerFBLogin != null)
                headerFBLogin.hide();            
        } else{ 
            var headerFBLoginText = $("#headerFBLoginText");
            if (headerFBLoginText != null)
                headerFBLoginText.html("Connect with Facebook");
        }
    }
    else {
        document.getElementById("HeaderSignUp").style.display = "";
        document.getElementById("notSingedIn").style.display = "";
    }
    document.getElementById("SiteNavigationList").style.display = "";
    document.getElementById("HeaderSignedStatus").style.display = "";
}

function setHeaderForPartners(PageDate, HyperlinkAdminClientId, HeaderListItemSignUpClientID, HyperLinkContactsClientID,
    ItemHeaderForPartnersSettingsClientId, ItemHeaderForPartnersSignStatusClientId, HyperlinkSignInOutClientID, SingedInText, SingOutUrl,
    LabelSignedStatusClientID, SignedStatusText, HyperlinkUserNameClientId, ItemHeaderForPartnersAnswerClientID, 
    ItemHeaderForPartnersMyActivityClientID , ItemHeaderForPartnersMyContactsClientID, LinkAdminClientID) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
        window.AA.authenticated = true;
        document.getElementById(ItemHeaderForPartnersSettingsClientId).style.display = "";
        //document.getElementById(ItemHeaderForPartnersSignStatusClientId).Attributes["class"] = "";
        var HyperlinkSignInOut = document.getElementById(HyperlinkSignInOutClientID);
        if (HyperlinkSignInOut != null){
            HyperlinkSignInOut.innerHTML = SingedInText;
            HyperlinkSignInOut.href = SingOutUrl;
        }
        var LabelSignedStatus = document.getElementById(LabelSignedStatusClientID);
        if (LabelSignedStatus != null){
            LabelSignedStatus.innerHTML = SignedStatusText;
        }
        var HyperlinkUserName = document.getElementById(HyperlinkUserNameClientId);
        if (HyperlinkUserName != null){
            HyperlinkUserName.href = PageDate.CurrentUser.UserProfileUrl;
            HyperlinkUserName.innerHTML = PageDate.CurrentUser.UserName;
        }

        document.getElementById(ItemHeaderForPartnersAnswerClientID).style.display = "";
        document.getElementById(ItemHeaderForPartnersMyActivityClientID).style.display = "";
        document.getElementById(ItemHeaderForPartnersMyContactsClientID).style.display = "";
        document.getElementById(HyperLinkContactsClientID).href = PageDate.CurrentUser.UserContactsUrl;
        document.getElementById(HeaderListItemSignUpClientID).style.display = "none";
        if (PageDate.CurrentUser.IsAdmin == "True") {
            document.getElementById(LinkAdminClientID).style.display = "";
            //document.getElementById("useDataAdmin").style.display = "";
            document.getElementById(HyperlinkAdminClientId).href = PageDate.CurrentUser.AdminUrl;
            document.getElementById("ItemHeaderForPartnersExplore").className ="";
        }
    }
    else {
        document.getElementById(HeaderListItemSignUpClientID).style.display = "";
        //document.getElementById("notSingedIn").style.display = "";
    }
    document.getElementById("topNavigationForPartner").style.display = "";
    document.getElementById("topUserStatsHeaderForPartners").style.display = "";
    
}

//OK
function setQuestionBlogPage(PageDate) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        questionBlog_isAuthenticated = true;
        window.AA.authenticated = true;
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
    }
    else {
        questionBlog_isAuthenticated = false;
    }
    if (PageDate.IsInQuestionAskingMode == "True") {
        element = document.getElementById("MiddleOfAsking");
        if (element != null)
            element.style.display = "";
    }
}

//OK
function setQuestionPostDetailsQuestionView(PageDate, numViewsClientId, ViewsCountTemplate, postedOnClientId) {
    if (PageDate.Question != null) {
        var viewsElement = document.getElementById(numViewsClientId);
        if (viewsElement != null)
            viewsElement.innerHTML = ViewsCountTemplate.replace("{ViewsCount}", PageDate.Question.ViewsCount);

        document.getElementById(postedOnClientId).lastChild.data = " " + PageDate.Question.PostedOn;
    }
}

//OK
function setQuestionPostDetailsAnswerView(PageDate, answerId, HyperLinkUserAnswersClientID, UserAnswersTemplate, LabelThumbsUpCountClientID, HelpfulAnswersTemplate, postedOnClientId, lastCommentPostedOnClientId, reportAbuseClientId) {
    if (PageDate.Question != null && PageDate.Question.Answers != null) {

        for (var i = 0; i < PageDate.Question.Answers.length; i++) {
            answer = PageDate.Question.Answers[i];
            if (answer.Id == answerId) {
                document.getElementById(postedOnClientId).lastChild.data = " " + answer.PostedOn;


                if (answer.LastCommentPostedOn != null & answer.LastCommentPostedOn != "") {
                    var lastCommentPostedOn = document.getElementById(lastCommentPostedOnClientId);
                    if (lastCommentPostedOn != null)
                        lastCommentPostedOn.innerHTML = answer.LastCommentPostedOn;
                }

                if (answer.AllowEdit == "True") {
                    reportAbuse = document.getElementById(reportAbuseClientId);
                    if (reportAbuse != null)
                        reportAbuse.style.display = "none";
                }
                
                UserAnswers = document.getElementById(HyperLinkUserAnswersClientID);
                if (UserAnswers != null) {
                    UserAnswers.innerHTML = UserAnswersTemplate.replace("{NumAnswers}", answer.Answerer.AnswersCount);
                    thumbsUp = document.getElementById(LabelThumbsUpCountClientID)
                    if (thumbsUp != null) {
                        thumbsUp.innerHTML = HelpfulAnswersTemplate.replace("{NumThumbs}", answer.Answerer.HelpfulAnswersCount);
                    }
                }
                break;
            }
        }
    }

}
//////////////////////
////////@@@@@@@@@@@@2
function setQuestionMetaData(PageDate, WatchersCountTemplate, LabelWatchClientID, LabelWatchersCountClientID, QuestionWatchUrl, ViewsCountTemplate, numViewsClientId, QuestionWatch, QuestionUnWatch) {
    if (PageDate.Question != null) {
        if (PageDate.Question.WatchersCount > 0) {
            //document.getElementById("NumSubscribedUsers").style.display = "";
            //document.getElementById(HlNumSubscribedUsersClientID).innerHTML = WatchersCountTemplate.replace("{NumWatchers}", PageDate.Question.WatchersCount);
            //document.getElementById(HlNumSubscribedUsersClientID).className = "";
        }
        
        var viewsElement = document.getElementById(numViewsClientId);
        if (viewsElement != null)
            viewsElement.innerHTML = ViewsCountTemplate.replace("{ViewsCount}", PageDate.Question.ViewsCount);

        if (PageDate.Question.CurrentUserWatching == "True") {
            document.getElementById(LabelWatchClientID).innerHTML = QuestionUnWatch;
        }
        else {
            document.getElementById(LabelWatchClientID).innerHTML = QuestionWatch;
        }

        var labelWatchersCount = document.getElementById(LabelWatchersCountClientID);
        if (PageDate.Question.WatchersCount == 0) {
            labelWatchersCount.href = '';
            labelWatchersCount.className = "ANoLink";
        }
        else {
            labelWatchersCount.href = QuestionWatchUrl;
        }
        labelWatchersCount.innerHTML = PageDate.Question.WatchersCount;
        
    }
}

//OK
function setQuestionBlogMain(PageDate) {
    if (PageDate.Question != null){

            // sined in
			if (PageDate.CurrentUser != null || PageDate.CurrentUser.UserLoggedIn == "True") {
			    if (PageDate.CurrentUser.UserLoggedIn == "True") {
			        window.AA.authenticated = true;
			        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
			    }
			    
			    // Owner signedin
			    if (PageDate.Question.IsCurrentUserOwner == "True") {
			        document.getElementById("QuestionOnwer").style.display = "";
			        document.getElementById("LinkEdit").style.display = "";
			        document.getElementById("QuestionNotOwner").style.display = "none";

			    }
			    if (PageDate.CurrentUser.IsAdmin == "True") {
			        document.getElementById("QuestionAdmin").style.display = "";

			    }
			}

		}

}

//OK
function setQuestionBlogPost(PageDate, answerId, HyperLinkCommentsClientID, CommentsTemplate) {
    if (PageDate.Question != null && PageDate.Question.Answers != null) {

        for (var i = 0; i < PageDate.Question.Answers.length; i++) {
            answer = PageDate.Question.Answers[i];
            if (answer.Id == answerId) {
                if (answer.AllowEdit == "True") {
                    document.getElementById("LinkEdit" + answer.Id).style.display = "";
                    document.getElementById("DeletePost" + answer.Id).style.display = "";
                }
                if (answer.CommentsCount > 0) {
                    document.getElementById(HyperLinkCommentsClientID).innerHTML = CommentsTemplate.replace("{Count}", answer.CommentsCount);
                }
                break;
            }
        }
    }

}

//OK
function setQuestionBlogPostReply(PageDate, ChkBlogSubscribeClientID) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        window.AA.authenticated = true;
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
        if ((PageDate.Question.IsCurrentUserOwner != "True") && (PageDate.Question.CurrentUserWatching == "True")) {
            element = document.getElementById(ChkBlogSubscribeClientID);
            if (element != null)
                element.checked = true;
        }
        if (PageDate.Question.IsCurrentUserInvitationOpen == "True") {       
            element = document.getElementById("PostReplayBox");
            if (element != null)
                element.style.display = "";     
       }
    }
}

function setQuestionBlogPostRankControl(PageDate, answerId, LabelNumThumbsClientID, myVoteImageUrl, ImageButtonThumbUpClientID) {
    if (PageDate.Question != null && PageDate.Question.Answers != null) {

        for (var i = 0; i < PageDate.Question.Answers.length; i++) {
            answer = PageDate.Question.Answers[i];
            if (answer.Id == answerId) {
                element = document.getElementById(LabelNumThumbsClientID);
                if (element != null) {
                    element.innerHTML = "(" + answer.HelpfullCount + ")";
                    var ImageButtonThumbUp = document.getElementById(ImageButtonThumbUpClientID);
                    if (answer.IsCurrentUserOwner == "True"){
                        ImageButtonThumbUp.setAttribute("onclick", "");
                        ImageButtonThumbUp.style.cursor = "default";
                    }
                    if (answer.IsUserVoted == "True") {
                        //document.getElementById(myVoteImageClientID).src = myVoteImageUrl;
                        //ImageButtonThumbUp.setAttribute("onmouseout", onmouseout);
                        ImageButtonThumbUp.className = "HelpfulSelected aashouldsig";
                    }
                }
                break;
            }
        }
    }
}

function setConsistentMessageControl(PageDate, UpdatePanelConsistentMessageClientID, LinkButtonAddTagsClientID, HideShowTags, LinkButtonAddIconClientID) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        window.AA.authenticated = true;
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
        if ((PageDate.CurrentUser.HasTags != "True") || (PageDate.CurrentUser.HasBodyIcon != "True")) {

            document.getElementById(UpdatePanelConsistentMessageClientID).style.display = "";
            
            if ((HideShowTags != "True") && (PageDate.CurrentUser.HasTags != "True")) {
                document.getElementById(LinkButtonAddTagsClientID).style.display = "";
            }
            
            if (PageDate.CurrentUser.HasBodyIcon != "True") {
                document.getElementById(LinkButtonAddIconClientID).style.display = "";
            }
        }
    }
}
function setNewYeddaGreeting(PageDate) {
    NewYeddaGreetingCookie = getNewYeddaGreetingCookie();
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        if (NewYeddaGreetingCookie != "dontShow") {
            var element = document.getElementById("NewYeddaOuterContainer");
            if (element != null)
                element.style.display = "";
            setNewYeddaGreetingCookie("show");
        }
    }
    else {
        if (NewYeddaGreetingCookie != "show") {
            setNewYeddaGreetingCookie("dontShow");
        }
    }
}

function setNewYeddaGreetingCookie(value) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + 365);
    document.cookie = "yaaw=" + escape(value) + ";path=/;domain=.yedda.com;expires=" + exdate.toGMTString();
}

function getNewYeddaGreetingCookie() {
    c_name = "yaaw";
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return "";
    }

function setPreBlogAdmin(PageDate, ContextSectionClientID) {
    if (PageDate.CurrentUser != null && PageDate.CurrentUser.UserLoggedIn == "True") {
        window.AA.authenticated = true;
        window.AA.consented = (PageDate.CurrentUser.Consented == "True" ? true : false);
        questionBlog_isAuthenticated = true;
        if (PageDate.CurrentUser.IsAdmin == "True") {

            element = document.getElementById(ContextSectionClientID);
            if (element != null)
               element.style.display = "";
        }
    }
}


// JScript File
var menu;
var doNotClose = false;

function showHideMenu(menuId, e) {
    if (window.event) 
        event.cancelBubble=true;
    else if (e.stopPropagation) 
        e.stopPropagation();
    
    clearHideMenuDelay();

    menu = document.getElementById(menuId);
    if(menu) {
        if(menu.style.display == "none")
            showMenu();
        else
           hideMenu(); 
    }
}
function showMenu() {
    menu.style.display = "block";
}

function hideMenu() {
    if (typeof(menu) != 'undefined' && typeof(menu.style) != 'undefined' && typeof(menu.style.display) != 'undefined') {
		menu.style.display = "none";
    }
}

function hideMenuDelay() {
    if(doNotClose){
        doNotClose = false;
        return;
    }
    delayHide = window.setTimeout("hideMenu();", 250);
}
function clearHideMenuDelay(){
    if (typeof delayHide!="undefined")
        clearTimeout(delayHide);
}

document.onclick=hideMenuDelay;


function yedda_check_scroll(yeddaRefreshCookieName, questionBlogAutoRefreshTime) {
		if (typeof(window.yedda_stid) != 'undefined') {
			clearTimeout(window.yedda_stid);
		}
		
		sp = Yedda_getScrollXY();
		if (sp && typeof(sp.length) != 'undefined' && sp.length > 1) {
			if (sp[0] != window.yedda_sx || sp[1] != window.yedda_sy) {
				window.yedda_sx = sp[0];
				window.yedda_sy = sp[1];

				yedda_do_refresh(yeddaRefreshCookieName, questionBlogAutoRefreshTime);
			}
		}
		
		window.yedda_stid = setTimeout('yedda_check_scroll("' + yeddaRefreshCookieName +'", ' + questionBlogAutoRefreshTime + ');', 500);
	}
	
	function yedda_do_refresh(yeddaRefreshCookieName, questionBlogAutoRefreshTime) {
		if (typeof(window.yedda_refresh_id) != 'undefined') {
			clearTimeout(window.yedda_refresh_id);
		}
		window.yedda_refresh_id = setTimeout('if (window.yedda_refresh) { c_qbid = Yedda_getCookieValue("' + yeddaRefreshCookieName + '", "qbid"); if (c_qbid == window.yedda_qbid) { location.reload(true); } }', questionBlogAutoRefreshTime * 1000); 	
	}
	function yedda_refresh(yeddaRefreshCookieName, questionBlogAutoRefreshTime) {
		if (typeof(window.yedda_refresh) == 'undefined') { 
			window.yedda_refresh = true; 
		}
		if (window.yedda_refresh) {
		    yedda_do_refresh(yeddaRefreshCookieName, questionBlogAutoRefreshTime);
		}
	}

function ValidateAnswerAnchor(baseUrl) {
    // we see if there is an anchor of the form #answeridXXX or #postIdXXX in the query
    var answerId;
    if ( document.location.hash.length > 0 ) {
        var answerIdRegexp = /#answer(\d+)/i;
        var postIdRegexp = /#postid(\d+)/i;
        if (answerIdRegexp.test(document.location.hash)) {
            answerId = answerIdRegexp.exec(document.location.hash)[1];
        } else if (postIdRegexp.test(document.location.hash)) {
            answerId = postIdRegexp.exec(document.location.hash)[1];
            // replace the anchor to be #answerXXX
            document.location.hash = "#answer"+answerId;
        }
    }
    // if we dont find the anchor on the page, we redirect it to the answer's permalink
    if (typeof (answerId) != 'undefined' && document.getElementById('answer' + answerId) == null) {    
        document.location = baseUrl+"answer"+answerId;
    }       
}

function RemoveQuestionClicked(objId, progressImage) {
    var imageId = objId.replace('LinkButtonRemoveQuestion1', 'Image1');
    var removeQuestionIcon = $get(imageId);
    if (removeQuestionIcon) {
        removeQuestionIcon.src = progressImage;
    }
}

if (window.location.hash && (window.location.hash).match(/answer\d+/) && $(window.location.hash).length > 0) {
    $(window.location.hash).parent().css("background-color","#fffe99");
}
/*
This js file is part of a workaround to fix a bug that we found (Bug 151). The other part is 
in the file UserControls/QuestionBlogpostControl.ascx.cs.

The bug: 
=========
MaintainScrollPosition returns the page to its original position after postback.
This is not always desirable, e.g. when a user clicks on the "answer this question" button
the page is supposed to return after postback with the answer textbox visible.
MaintainScrollPosition works by adding a link to a js file (WebResource.axd) that contains 
(among other things) functions for saving the scroll position and restoring the scroll position.
These functions are called when the submit or onload events occur.
The code that achieves this is added to the bottom of the rendered page:


theForm.oldSubmit = theForm.submit;
theForm.submit = WebForm_SaveScrollPositionSubmit;

theForm.oldOnSubmit = theForm.onsubmit;
theForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;

theForm.oldOnLoad = window.onload;
window.onload = WebForm_RestoreScrollPosition;



We were able to cancel the effect of these functions by redirecting them to empty functions.
The empty functions are then added to the page only if we are in the reply mode.
The following code is from QuestionBlogpostControl.ascx.cs, and shows how we did this:



if(Request.QueryString.ToString().Contains("replyToPostId")) {
	string ScrollScript = string.Format("<script type='text/javascript' src='{0}Scripts/ScrollToPosition.js'></script>", LogicalUrlManager.GetApplicationPath());
	this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "YeddaScroll", ScrollScript);
	this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Yedda_RestoreScrollPosition", " \n WebForm_RestoreScrollPosition = Yedda_RestoreScrollPosition;", true);
}

this code adds the following js to the page:
<script type="text/javascript">
<!--
 
 WebForm_RestoreScrollPosition = Yedda_RestoreScrollPosition;// -->
</script>


The empty functions are below
		
*/
function Yedda_SaveScrollPositionSubmit()
{
    
}
function Yedda_SaveScrollPositionOnSubmit()
{
    
}
function Yedda_RestoreScrollPosition()
{
    
}

function trackOutgoing(origin, destination) {              
     var temp = Yedda.Api.Internal.Tracking.OutgoingLinksTracker.appPath + Yedda.Api.Internal.Tracking.OutgoingLinksTracker.path + "/Track" + "?originUrl=" + origin + "&destinationUrl=" + destination;
     new Image().src = temp;           
}

function trackUserActivity(source, scenario, data) {
	try {
        if (typeof (_gaq) != 'undefined') {
            _gaq.push(['_trackEvent', source + "_" + scenario + "_" + data, 'Click'])
        }
		Yedda.Api.Internal.Tracking.UserActivityTrackerService.TrackUserActivity(source, scenario, data, null, trackUserActivityFailed);
	} catch (err) {
	}
}

function trackUserActivityFailed() {
}
var maxWidth = 0;
var maxHeight = 0;

var getsEllipsis = false;
var getsExpandingEllipsis = false;
var getsHeightTruncation = false;

//Keeps track of how many elements we have already checked
var currentTruncationItem = 0;
//the array of elements we are checking
var arrElements;
/*
The main function, that finds all the elements that should be truncated
then activates the function that will check each element to see if it needs
to be truncated
*/
function TruncateAll(targetClassName, targetElementName)
{
    //set value to 0 in case we have more than one call to the function on the page
    currentTruncationItem = 0;
    //create an array of all the requested elements
    arrElements = getElementsByClassName(document, targetElementName, targetClassName);
    if(arrElements.length > 0)
        checkIfTruncate(targetClassName);
 }
 
 /*
    function loops over the array of elements we are checking, and finds the ones
    that contain the specified class name. These elements are then sent to the 
    TruncateElement function which will truncate them if necessary. The function calls
    itself after a pause (so that the user can continue working while the elements are
    being truncated)
 */
 function checkIfTruncate(targetClassName)
 {   
    //find  the current element we are checking, and truncate it if needed
    var tempElem = arrElements[currentTruncationItem];
    if(tempElem)
        TruncateElement(tempElem);
    //call the function again, after a pause
    if(currentTruncationItem < arrElements.length -1)
    {
        currentTruncationItem++;
        setTimeout("checkIfTruncate('"+targetClassName+"')",200);
    }
}

/*
Handles the truncation of a specific target node.
*/
function TruncateElement(Target)
{
    maxWidth = getMaxWidth(Target);
    maxHeight = getMaxHeight(Target);
    
    //Check what kind of truncation will be performed
    getsEllipsis = Target.className.indexOf("TruncatedAddEllipsis") > -1;
    getsExpandingEllipsis = Target.className.indexOf("TruncatedAddExpandEllipsis") > -1;
    getsHeightTruncation = Target.className.indexOf("HeightTruncated") > -1;
    
    if(getsExpandingEllipsis)
    {
        //Create a new DOM node and add it as a child of the current node's parent
        var completeTextId = Target.id+"CompleteText";
        var completeTextElement = createFullDisplayElement("div", completeTextId, findTargetParent(Target));
        
        // Add the attributes necessary
        document.getElementById(completeTextId).className = "fullDisplayHidden";
        document.getElementById(completeTextId).innerHTML = Target.innerHTML;
    }
    var mustAppendEllipsis = false;
    if(getsHeightTruncation){
        if(Target.offsetHeight > maxHeight){
            while(Target.offsetHeight > maxHeight){
                var lastNode = findLastNodeToTruncate(Target);
                removeTrailingWord(lastNode);
                mustAppendEllipsis = true; 
            }
            if(mustAppendEllipsis)
            {
                //appendEllipsis(Target);
                lastNode = findLastNodeToTruncate(Target);
                removeTrailingWord(lastNode);
                lastNode = findLastNodeToTruncate(Target);
                lastNode.nodeValue += "...";
            }
        }
    }else{
        if(parseInt(Target.offsetWidth + Target.offsetLeft) >= maxWidth)
        {
            while(parseInt(Target.offsetWidth + Target.offsetLeft) >= maxWidth)
            {
                var lastNode = findLastNodeToTruncate(Target);
                removeTrailingWord(lastNode);
                mustAppendEllipsis = true; 
            }
            if(mustAppendEllipsis)
            {
                appendEllipsis(Target);
            }
        }
    }
}

/*
Recursive function that finds the last element of the specified target
*/

function findLastNodeToTruncate(targetElement)
{
    var nodeToTruncate;
    if(targetElement.childNodes.length>0)
       nodeToTruncate =  findLastNodeToTruncate(targetElement.lastChild);
    else
        nodeToTruncate = targetElement
    return nodeToTruncate;
}



/*
    Handles the removal of a word from the last child of the target element
*/
function removeTrailingWord(targetElement)
{
    if(targetElement.nodeName == "#text" && targetElement.nodeValue.length > 1)
    {
        if(hasTrailingSpace(targetElement.nodeValue))
        {
            while(targetElement.nodeValue.charAt(targetElement.nodeValue.length - 1) == " ")
                targetElement.nodeValue = targetElement.nodeValue.slice(0,targetElement.nodeValue.length - 1);
        }
        if(targetElement.nodeValue.indexOf(" ")> -1)
        {
            var wordBreak = findLastSpaceInString(targetElement.nodeValue)
            targetElement.nodeValue = targetElement.nodeValue.slice(0,wordBreak);
            return;
        }
    }
    targetElement.parentNode.removeChild(targetElement); 
}

/*
Adds a new node for the ellipsis to the target node. If the adition of the ellipsis node will 
make the target node too long the function removeTrailingWord is called to remove another word.
*/
function appendEllipsis(targetElement)
{
    var ellipsisElement;
    if(getsEllipsis)
    {
       var strEllipsis = " ...";
       ellipsisElement = document.createElement("span");
       ellipsisElement.setAttribute("id", targetElement.id+"Ellipsis");
       ellipsisElement.innerHTML = strEllipsis;
    }
    else if(getsExpandingEllipsis)
    {
        ellipsisElement = addExpandingEllipsisText(targetElement.id)
    }
    
    elementParent = findTargetParent(targetElement);
    elementParent.appendChild(ellipsisElement);
    if(getsHeightTruncation)
    {
        var ellipsisHeight = parseInt(document.getElementById(targetElement.id+"Ellipsis").offsetHeight);
        if(parseInt(targetElement.offsetHeight + ellipsisHeight) >= maxHeight)
        {
            while(parseInt(targetElement.offsetHeight + ellipsisHeight) >= maxHeight)
            {
                var lastNode = findLastNodeToTruncate(targetElement)
            removeTrailingWord(lastNode);
            }
        }
    }
    else
    {
        var targetWidth = parseInt(targetElement.offsetWidth + targetElement.offsetLeft);
        var ellipsisWidth = parseInt(document.getElementById(targetElement.id+"Ellipsis").offsetWidth);
        if(parseInt(targetWidth + ellipsisWidth) >= maxWidth)
        {
            while(parseInt(targetElement.offsetWidth +targetElement.offsetLeft + ellipsisWidth) > maxWidth)
            {
                var lastNode = findLastNodeToTruncate(targetElement)
                removeTrailingWord(lastNode);
            }
        }
    }  
}

/*
Creates an href element with a call to a function that will display the entire text that was
truncated
*/
function addExpandingEllipsisText(targetElementId)
{
    var expandingEllipsis = document.createElement("a");
    expandingEllipsis.setAttribute("class","ExpandingEllipsis");
    expandingEllipsis.setAttribute("className","ExpandingEllipsis");
    var clickString = "fullTextDisplay('"+targetElementId+"',"+getsHeightTruncation+")"
    expandingEllipsis.setAttribute("href", "javascript:"+clickString);
    expandingEllipsis.setAttribute("id", targetElementId+"Ellipsis");
    expandingEllipsis.innerHTML = "...";
    
    return expandingEllipsis;
}




/*
    Finds the space (" ") that is closest to the end of the given string
*/
function findLastSpaceInString(str)
{
    return str.lastIndexOf(" ");
}



function hasTrailingSpace(targetString)
{
    var hasTrailingSpace = false;
    if(targetString != null)
    {
        var lastPosition = targetString.length - 1;
        if(targetString.charAt(lastPosition) == " ")
            hasTrailingSpace = true;
    }
        
    return hasTrailingSpace;
}


/*
    Sets the display of the element with the full text and the element with the truncated text
*/
function fullTextDisplay(elemId, shouldTruncateHeight)
{
    var completeTextElement = document.getElementById(elemId+"CompleteText");
    truncatedTextElement = document.getElementById(elemId);
    if(shouldTruncateHeight)
    {
        completeTextElement.className = truncatedTextElement.className;
        var elemParent = findTargetParent(truncatedTextElement);
        elemParent.style.height = parseInt(completeTextElement.offsetHeight + 15)+"px";
        elemParent.style.overflowX = "auto";
     //   elemParent.style.overflow = "visible";
    }
    else
    {
           completeTextElement.className = "fullDisplayVisible";
    }
    document.getElementById(elemId+"Ellipsis").style.display = "none";
    truncatedTextElement.style.display = "none";
}



/*
    Creates a new DOM node of the type specified, as a child of the parent element specified
*/
function createFullDisplayElement(elementType, elementId, elementParent)
{
    var elem = document.createElement(elementType);
    elem.setAttribute("id", elementId);
    elementParent.appendChild(elem);
    
    return elem;
}

/*
returns the parent element of the specified element
*/
function findTargetParent(Child)
{   
    return Child.parentNode;
}


function getMaxWidth(targetDiv)
{
    var parentElem = findTargetParent(targetDiv);
    if(parentElem.offsetWidth < 700)
        return parentElem.offsetWidth;
    else
        return 700;
}

function getMaxHeight(targetElem)
{
    var parentElem = findTargetParent(targetElem);
    return parentElem.offsetHeight;
}
function yedda_patch_target(link) {
    var host = link.host.toLowerCase();
    if (host.indexOf(':') > -1) {
        host = new String(host).replace(/:\d+/, '');
    }
    
    // Don't track yedda.com and localhost links
    if (!host.endsWith('yedda.com') && !host.startsWith('localhost') && !link.href.startsWith("javascript:")) { 
        if(!host.startsWith('nick-amici'))       
            link.target = "_parent";
    }
}

function yedda_ts() {   
    var allLinks = document.getElementsByTagName('a');
    if (allLinks && allLinks.length > 0) {
        var link;
        for (var i=0; i < allLinks.length; i++) {        
            link = allLinks[i];
            if (link.href && link.href != '') {                            
                yedda_patch_target(link);
            }           
        }
    }
}


function UpdateUserIcons() {
	var elements = getElementsByClassName(document, "*", "OuterReferencedImage");
	var userList = new Array();
	for(var i = 0;i < elements.length;i++) {
		classes = elements[i].className.split(" ");
		for(var j = 0;j < classes.length; j++) {
		    if (classes[j].indexOf("ORIFBUID_") == 0) 
		    {
		        userList[i] = classes[j].substring(9);
		        break;
		    }
	    }
	}
	var userImageList;
	if (userList.length > 0)
    {
	    Yedda.Api.Internal.UserImage.UserImageRetriever.GetUpdatedUsersImage(userList, UpdateUserIcons_callback);
	}
}

function UpdateUserIcons_callback(userImageList){
    var elements = getElementsByClassName(document, "*", "OuterReferencedImage");
    for(var i = 0;i < elements.length;i++) {
        if ((userImageList[i] != "") && (userImageList[i] != null)) {
		    elements[i].setAttribute("src", userImageList[i]);
	    }
	}
}



/* See http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/ for credits */
/* parameters:
    oElm = root element to start search from (or document)
    strTagName = tag to search for, or "*" if all tags
    oClassNames = array of class names, or a single string class name. If array is used, returns element 
    only if it matches ALL specified classes. 
   Returns: array of elements
    */
function getElementsByClassName(oElm, strTagName, oClassNames){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object"){
        for(var i=0; i<oClassNames.length; i++){
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++){
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++){
            if(!arrRegExpClassNames[k].test(oElement.className)){
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

var _Yedda_registerBodyOnLoad_list = new Array();
var _Yedda_registerBodyOnLoad_oldOnLoad;
var _Yedda_registerBodyOnLoad_implementOnLoad_called = false;

function _Yedda_registerBodyOnLoad_implementOnLoad() {
    if (_Yedda_registerBodyOnLoad_implementOnLoad_called)
        return;
    _Yedda_registerBodyOnLoad_implementOnLoad_called = true;
    if (!_Yedda_registerBodyOnLoad_list)
        return;
    for (var i = 0; i < _Yedda_registerBodyOnLoad_list.length; i++) {
        eval(_Yedda_registerBodyOnLoad_list[i]);
    }
    if (_Yedda_registerBodyOnLoad_oldOnLoad)
        _Yedda_registerBodyOnLoad_oldOnLoad();
}

function Yedda_registerBodyOnLoad(methodCall) {
    
    if (!_Yedda_registerBodyOnLoad_oldOnLoad) {
        if (document.body.onload != _Yedda_registerBodyOnLoad_implementOnLoad) {
            _Yedda_registerBodyOnLoad_oldOnLoad = window.onload;
            window.onload = _Yedda_registerBodyOnLoad_implementOnLoad;
        }
    }
    _Yedda_registerBodyOnLoad_list.push(methodCall);   
}

function Yedda_Internal_HandleWebServiceTimeout(result) {
    window.alert("Oops. No response from Yedda. Why don't you try again?");
}

function Yedda_Internal_HandleWebServiceError(result) {
    window.alert("Oops. Something went wrong. Why don't you try again?");
}

/*******************
Call this as the first line of a _OnComplete handler for a web service call.
Will return true if the call was succesful. 
Otherwise, will automatically handle not-signed-in or no-permission, and return false.
*******************/
function Yedda_Internal_HandleWebServiceComplete(result) {
    if (typeof(result) == "undefined") {
        Yedda_Internal_HandleWebServiceError(null);
        return false;
    }
    if (!result) {
        Yedda_Internal_HandleWebServiceError(null);
        return false;
    }   
    if (typeof(result.serviceReturnCode) == "undefined")
        Yedda_Internal_HandleWebServiceError(null);
    switch (result.serviceReturnCode) {
        case 0: {   // success
            return true;
        }
        case 1: { // NotSignedIn
            if (typeof(Yedda_Internal_ClientSignHelper_TransferIfNotSignedIn) != "function")
                Yedda_Internal_HandleWebServiceError(result);
            Yedda_Internal_ClientSignHelper_TransferIfNotSignedIn();
            break;
        }
        case 2: { // NoPermissions
            Yedda_Internal_NoPermission();
            break;
        }
    }
    return false;
}

function Yedda_Internal_NoPermission() {
    // todo
}

var _Yedda_Internal_RegisterForPostbackProgressTrigger_list = new Array();

/***************************
Register a method to be called before calling the server, to turn on progress indicators.
Provide a string with the name of the method. 
The method must have the following signature:
function methodName(eventTargetServerId) returns array of strings
eventTargetServerId is the server id of the control that initiated the postback
Returns the list of triggers to use for turning on the progress indicators (using ProgressControl_setVisible)
*/
function Yedda_Internal_RegisterForPostbackProgressTrigger(methodName) {
    if (typeof(debug) != 'undefined') {
        if (typeof(debug.assert) != 'undefined') {
            debug.assert(_Yedda_Internal_RegisterForPostbackProgressTrigger_list != null);
        }
    }
    
    if (_Yedda_Internal_RegisterForPostbackProgressTrigger_list != null) {
        _Yedda_Internal_RegisterForPostbackProgressTrigger_list.push(methodName);
    }
}

function _Yedda_Internal_HandleBeforePostback(eventTargetServerId) {
    for (i = 0; i < _Yedda_Internal_RegisterForPostbackProgressTrigger_list.length; i++) {
        var triggers = eval(_Yedda_Internal_RegisterForPostbackProgressTrigger_list[i] + "('" + eventTargetServerId + "')");
        if (triggers) {
            if (triggers.length > 0)
                if (typeof(ProgressControl_setVisible) != "undefined") {
                    ProgressControl_setVisible(triggers, true);
                }
        }
    }
}

function _Yedda_Internal_HandleAfterPostback() {
    // Turn off all progress indicators:
    // hack #2: Setting the style.visibility does not work in the 
    // isPostBack = false event, so we'll postpone it a bit using setTimeout. 
    if (typeof(ProgressControl_setVisible) != "undefined") {
        if (ProgressControl_setVisible) {
            window.setTimeout("ProgressControl_setVisible('', false)", 1);
         }
     }
}

function _Yedda_Internal_HandleAtlasPageRequestManagerPropertyChanged(obj, e) {
    if (!e)
        return;
    if (e.get_propertyName() == "inPostBack") {
        if (obj.get_inPostBack()) {
            debug.assert(obj);
            debug.assert(obj.get_form());
            var form = $get(obj.get_form());
            debug.assert(form);
//             debug.assert(form.__EVENTTARGET);
            var eventTargetServerId = form.__EVENTTARGET.value;
            _Yedda_Internal_HandleBeforePostback(eventTargetServerId);
        } else {
            // the __EVENTTARGET is not reliable in the isPostBack = false stage, we'll have to do without it... 
            _Yedda_Internal_HandleAfterPostback();
            if (typeof(_Yadda_Internal_UnsignedHome_AfterPostback) != "undefined") 
                _Yadda_Internal_UnsignedHome_AfterPostback();
        }
    }
}

function Yedda_Internal_HandleAtlasApplicationLoad(obj, e) {
    if (Sys.WebForms.PageRequestManager)
        Sys.WebForms.PageRequestManager.propertyChanged.add(_Yedda_Internal_HandleAtlasPageRequestManagerPropertyChanged);
}

function writeNoSpamEmail(text, p1, p2) {
    if (text == "")
        text = p1 + "@" + p2;
    document.write("<a href='" + "mail" + "to:" + p1 + "@" + p2 + "'>" + text + "</a>");
}

function Yedda_RegisterDynamicScriptBlock(source) {
	var script = document.createElement('script'); 
	script.type = 'text/javascript'; 
	script.src = source; 
	document.getElementsByTagName('head')[0].appendChild(script);
}

function Yedda_getCookieValue(c_name, k_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            c_c = document.cookie.substring(c_start, c_end);

            if (k_name && k_name != '' && c_c.indexOf("&") > -1) {
                p = c_c.split('&');
                for (var i = 0; i < p.length; i++) {
                    ip = p[i].split('=');
                    if (ip.length > 1) {
                        if (ip[0] == k_name) {
                            return ip[1];
                        }
                    }
                }
            } else {
                return c_c;
            }
        }
    }
    return null;
}

function Yedda_getScrollXY() {
    var x = 0, y = 0;
    if (typeof (window.pageYOffset) == 'number') {
        //Netscape compliant
        y = window.pageYOffset;
        x = window.pageXOffset;
    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        //DOM compliant
        y = document.body.scrollTop;
        x = document.body.scrollLeft;
    } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        //IE6 standards compliant mode
        y = document.documentElement.scrollTop;
        x = document.documentElement.scrollLeft;
    }
    return [x, y];
}
AA.AuthMigrate = {
    _authCheckUrl: "http://yedda.com/api/internal/authcheck.ashx?cb=AA.AuthMigrate.checkResponse",
    _authSetUrl: "http://aolanswers.com/api/internal/authset.ashx?key=",
    _reload: false,

    _setAuth: function(key) {

    },

    _execute: function(url) {
        var script = document.createElement('script');
        script.type = "text/javascript";
        script.src = url;
        $("body").append(script);
    },

    check: function(reload) {
        AA.AuthMigrate._reload = reload;
        AA.AuthMigrate._execute(AA.AuthMigrate._authCheckUrl);
    },

    checkResponse: function(authenticated, id) {
        if (authenticated) {
            var url = AA.AuthMigrate._authSetUrl + id;
            if (AA.AuthMigrate._reload) {
                url += "&reload=1";
            }
            AA.AuthMigrate._execute(url);
        }
    }
}
AA.UI.AutoComplete = {
	CompleteTitle: function (inputVal) {
		return inputVal && inputVal.indexOf(' ', 0) > 0;
	},
	Enabled: function (inputClass, enable) {
		if (enable) {
			$(inputClass).autoComplete('enable');
		} else {
			$(inputClass).autoComplete('disable');
		}
	},
	Init: function (inputClass, serviceUrl, objectType, searchUrl, categoriesUrl, searchForText, inText, questionText, topicText, typingDelay, shouldAbortOld, cacheLimit, startConn, onAskB, multipleAnswerText, explicitTopics) {
		var onAsk = onAskB == 'true';
		$(inputClass).autoComplete({
			ajax: serviceUrl,
			redirectOnSelect: true,
			ajaxCache: true,
			delay: typingDelay,
			abortOld: shouldAbortOld,
			preventEnterSubmit: true,
			requestType: 'GET',
			postVar: 'q',
			cacheLimit: cacheLimit,
			//widthRatio: 1.2,
			onFocus: function (event, ui) { },
			startConnectionOnFocus: startConn,
			postFormat: function (event, ui) {
				var solrParams = {};
				if (onAsk) {
					solrParams.key = 'a';
				} else {
					if (AA.UI.AutoComplete.CompleteTitle(ui.search)) {
						solrParams.key = 'q';
					} else {
						solrParams.key = 't';
					}
				}
				solrParams.value = ui.search;
				if (!ui.search) {
					solrParams.key = 'ft';
					solrParams.value = 1;
				} else {
					if (explicitTopics) {
						var topics = explicitTopics.split(',');
						solrParams.t1 = topics[0].trim();
						if (topics.length > 1) {
							solrParams.t2 = topics[1].trim();
						}
					}
				}
				return solrParams;
			},
			formatResults: function (inputval, list) {
				var results = new Array();
				var counter = 0;
				if (onAsk) {
					if (list && list.response && list.response.docs) {
						for (var i = 0; i < list.response.docs.length; i++) {
							var item = new Array();
							var title = '';
							if (list.highlighting && list.highlighting[list.response.docs[i].uniqueKey] && list.highlighting[list.response.docs[i].uniqueKey].titleNGram) {
								title = list.highlighting[list.response.docs[i].uniqueKey].titleNGram;
							}
							if (title) {
								if (list.response.docs[i].childrenCount) {
									var answers = list.response.docs[i].childrenCount;
									title += '&nbsp;&nbsp;&nbsp;<span class=\'auto-complete-list-categories\'> ' + answers;
									if (answers == 1) {
										title += ' ' + questionText;
									} else {
										title += ' ' + multipleAnswerText;
									}
								}
								title += '</span>';
								results[counter++] = {
									value: list.response.docs[i].url,
									display: title,
									input: list.response.docs[i].title
								}
							}
						}
					}
					results[counter] = {
						value: searchUrl + '?q=' + inputval,
						display: '<span class=\'auto-complete-list-search\'>' + searchForText + ' <em>' + inputval + '</em></span>',
						input: inputval
					}
				} else {
					if (AA.UI.AutoComplete.CompleteTitle(inputval)) {
						if (list && list.response && list.response.docs) {
							for (var i = 0; i < list.response.docs.length; i++) {
								var item = new Array();
								var title = '';
								if (list.highlighting && list.highlighting[list.response.docs[i].uniqueKey] && list.highlighting[list.response.docs[i].uniqueKey].titleNGram) {
									title = list.highlighting[list.response.docs[i].uniqueKey].titleNGram;
								}
								if (title) {
									title += '&nbsp;&nbsp;&nbsp;<span class=\'auto-complete-list-categories\'>' + questionText;
									if (list.response.docs[i].categories) {
										title += ' ' + inText + ' ' + list.response.docs[i].categories;
									}
									title += '</span>';
									results[counter++] = {
										value: list.response.docs[i].url,
										display: title,
										input: list.response.docs[i].title
									}
								}
							}
						}
						results[counter] = {
							value: searchUrl + '?q=' + inputval,
							display: '<span class=\'auto-complete-list-search\'>' + searchForText + ' <em>' + inputval + '</em></span>',
							input: inputval
						}
					} else {
						if (list && list.facet_counts && list.facet_counts.facet_fields && list.facet_counts.facet_fields.tagsAsKeywords) {
							for (var i = 0; i < 10 && i < list.facet_counts.facet_fields.tagsAsKeywords.length; i = i + 2) {
								var item = new Array();
								var title = list.facet_counts.facet_fields.tagsAsKeywords[i];
								var prefix = title.indexOf(inputval, 0) + inputval.length;
								var titlePref = title.substr(0, prefix);
								var titleSuf = title.substr(prefix);
								results[counter++] = {
									value: categoriesUrl + title,
									display: '<em>' + titlePref + '</em>' + titleSuf + '&nbsp;&nbsp;&nbsp;<span class=\'auto-complete-list-categories\'>' + topicText + '</span>',
									input: title
								}
							}
							results[counter] = {
								value: searchUrl + '?q=' + inputval,
								display: '<span class=\'auto-complete-list-search\'>' + searchForText + ' <em>' + inputval + '</em></span>',
								input: inputval
							}
						}
					}
				}
				return results;
			}
		});
		AA.UI.AutoComplete.TrackSubmit();
	},
	TrackSubmit: function () {
		$("#autocompleteform").submit(function (event) {
			try {
				_gaq.push(['_trackEvent', 'AutoComplete', 'Button']);
			} catch (a) { }

			$(this).unbind("submit");

			setTimeout("$('#autocompleteform').submit();", 150);
			return false;
		});
	}
}


AA.UserService = {QuestionsToHideInTheList:100, AjaxRoot: ""};

AA.UserService.RemoveInterestingQuestion = function (questionBlogEncodedId, containerId) {
    $(containerId).hide();

    $.ajax({
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Connection", "close");
        },
        type: "POST",
        url: AA.UserService.AjaxRoot + "/api/internal/pages/userservice.asmx/RemoveInterestingQuestion",
        data: "{'questionBlogEncodedId':'" + questionBlogEncodedId + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
        }
    });

    AA.UserService.QuestionsToHideInTheList = AA.UserService.QuestionsToHideInTheList - 1;
    if (AA.UserService.QuestionsToHideInTheList == 0){
        window.location.reload();
    }
}

AA.UI.UserStatsControl = {
	CurrentUser: 0,

	InitTabs: function (context, currentUser, hover) {

		var hover = (hover) ? "_Hover" : "";
		if (currentUser) {
			AA.UI.UserStatsControl.CurrentUser = currentUser;
		}
		$(".UserStatsTabTotal", context).click(function (event, notrack) {
			var link = $(this).find("a");
			if (link.length > 0) {
				$(this).html(link.html());
				$(this).parent().next().next().find("li a").each(function () {
					var c = $(this).attr("class");
					c = c.replace("_Week", "_All");
					$(this).attr("class", c);
				});
				$(".UserWeeklyStats", context).hide();
				$(".UserTotalStats", context).show();
				$(".UserStatsTabWeek", context).html("<a href='#' class='Track_UStats_Tab_Week" + hover + "'>" + $(".UserStatsTabWeek", context).html() + "</a>");
				if (notrack == null) {
					yedda_oltrack($(".UserStatsTabWeek a"));
				}
			}
			return false;
		});

		$(".UserStatsTabWeek", context).click(function (event) {
			var link = $(this).find("a");
			if (link.length > 0) {
				$(this).html(link.html());
				$(this).parent().next().next().find("li a").each(function () {
					var c = $(this).attr("class");
					c = c.replace("_All", "_Week");
					$(this).attr("class", c);
				});
				$(".UserTotalStats", context).hide();
				$(".UserWeeklyStats", context).show();
				$(".UserStatsTabTotal", context).html("<a href='#' class='Track_UStats_Tab_All" + hover + "'>" + $(".UserStatsTabTotal", context).html() + "</a>");
				yedda_oltrack($(".UserStatsTabTotal a"));
			}
			return false;
		});
	},

	Popup: {
		Config: {
			PopupState: "closed",
			PopupInterval: 0,
			PopupTimeout: 300,
			PopupTimeoutId: 0
		},

		MouseEnter: function (params) {

			var obj = params.obj;

			if (AA.UI.UserStatsControl.Popup.Config.PopupInterval != 0) {
				clearInterval(AA.UI.UserStatsControl.Popup.Config.PopupInterval);
			}
            
			var objOffset = obj.offset();
			var objWidth = obj.width();
			var objHeight = obj.height();

			var userUrl = obj.find("a");
			var userImg = obj.find("a img");
			var userId = userUrl.attr("userid");
            
			var profileUrl = userUrl.attr("href");
			userUrl.attr("title", "");
			userImg.attr("title", "");
			if (userId == null || userId == "") {
				userId = profileUrl.replace("/people/", "").replace("/", "");
			}
			var userStatsPopup = $(".UserStatsPopup" + userId);
			
			var bodyWidth = $("body").width();

			if (userStatsPopup.length == 0) {
                
			    userStatsPopup = $(params.template).clone().appendTo("body");
			    userStatsPopup.attr("class", "UserStatsPopup USP UserStatsPopup" + userId);
				$(userStatsPopup).hover(function () { AA.UI.UserStatsControl.Popup.Config.PopupState = "opened"; }, function () { AA.UI.UserStatsControl.Popup.Config.PopupState = "closed"; });

				AA.UI.UserStatsControl.InitTabs(userStatsPopup, AA.UI.UserStatsControl.CurrentUser, true);
				userStatsPopup.css("top", objOffset.top - 15);


				if ((objOffset.left + userStatsPopup.width() + 80) > bodyWidth) {
					userStatsPopup.css("left", objOffset.left - userStatsPopup.width() - 30);
					userStatsPopup.addClass("UserStatsPopupOL");
				} else {
					userStatsPopup.css("left", objOffset.left + objWidth + 25);
					userStatsPopup.removeClass("UserStatsPopupOL");
				}

				userStatsPopup.show();
				
				var isCurrentUser = AA.UI.UserStatsControl.CurrentUser && AA.UI.UserStatsControl.CurrentUser == userId ? "1" : "0";
				$.ajax({
				    type: "POST",
					url: AA.UserService.AjaxRoot + "/api/internal/pages/userservice.asmx/GetUserStats",
					data: "{'userId':'" + userId + "', 'isCurrentUser':'" + isCurrentUser + "'}",
                    //data: {'userId': userId, 'isCurrentUser': isCurrentUser },
					//contentType: "application/json; charset=utf-8",
					beforeSend: function (xhr) { xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); },
					dataType: "json",
					success: function (data) {
					    var d = eval("(" + data + ")");
						if (!d.OK) {
							userStatsPopup.find(".UserStatsPopupInner").css("background-image", "none");
							var text = "Sorry this profile is unavailable.";
							var name = d.Name;
							if (d.Anonymouse) {
								text = "Anonymous posts are posted by real people. If you feel this post is violating the terms of use please report it.";
								name = "Anonymous Post";
							}
							userStatsPopup.find(".UserStatsPopupContent").html("<div class='UserStatsHeadline'>" + name + "</div><div class='UserStatsUnavailable'>" + text + "</div>").show();
							return false;
						}
						userStatsPopup.find(".UserStatsHeadline a").html(d.User.Name);
						if (d.User.Verified) {
							userStatsPopup.find(".UserStatsHeadline").append("<a href='/content/verifieduser' class='VerifiedUser' style='font-size: 0px;' title='Verified user - click to find out more'></a>");
							userStatsPopup.find('a.VerifiedUser').click(function () { $('#VerifiedUserExpText').jqmShow(); return false; });
						} else {
							userStatsPopup.find(".VerifiedUser").remove();
						}
						var UserStatsMeta = userStatsPopup.find(".UserStatsMeta");
						UserStatsMeta.html(UserStatsMeta.html().replace("#since#", d.User.MemberSince));

						var UserStatsCriteria = userStatsPopup.find(".UserStatsCriteria");
						var UserWeeklyStats = userStatsPopup.find(".UserWeeklyStats");
						var UserTotalStats = userStatsPopup.find(".UserTotalStats");

						var UserStatsCriteria_LI = UserStatsCriteria.find("li");
						var UserWeeklyStats_LI = UserWeeklyStats.find("li");
						var UserTotalStats_LI = UserTotalStats.find("li");

						var UCLI1 = UserStatsCriteria_LI.eq(0).find("a");
						UCLI1 = UCLI1.attr("href", d.User.ProfileQuestionsUrl);

						var UCLI2 = UserStatsCriteria_LI.eq(1).find("a");
						UCLI2 = UCLI2.attr("href", d.User.ProfileAnswersUrl);

						var UCLI3 = UserStatsCriteria_LI.eq(2).find("a");
						UCLI3 = UCLI3.attr("href", d.User.ProfileHelpfulAnswersUrl);

						var UCLI4 = UserStatsCriteria_LI.eq(3).find("a");
						UCLI4 = UCLI4.attr("href", d.User.ProfileFirstAnswersUrl);

						var UCLI5 = UserStatsCriteria_LI.eq(4).find("a");
						UCLI5 = UCLI5.attr("href", d.User.ProfileCommentsUrl);

						UserWeeklyStats_LI.eq(0).html("<a href='" + d.User.ProfileQuestionsUrl + "' class='Track_UStats_Questions_Week_Hover'>" + d.User.Stats.QuestionCount.Weekly + "</a>");
						UserWeeklyStats_LI.eq(1).html("<a href='" + d.User.ProfileAnswersUrl + "' class='Track_UStats_Questions_Week_Hover'>" + d.User.Stats.AnswersCount.Weekly + "</a>");
						UserWeeklyStats_LI.eq(2).html("<a href='" + d.User.ProfileHelpfulAnswersUrl + "' class='Track_UStats_Questions_Week_Hover'>" + d.User.Stats.HelpfulAnswers.Weekly + "</a>");
						UserWeeklyStats_LI.eq(3).html("<a href='" + d.User.ProfileFirstAnswersUrl + "' class='Track_UStats_Questions_Week_Hover'>" + d.User.Stats.FirstToAnswerCount.Weekly + "</a>");
						UserWeeklyStats_LI.eq(4).html("<a href='" + d.User.ProfileCommentsUrl + "' class='Track_UStats_Questions_Week_Hover'>" + d.User.Stats.CommentsCount.Weekly + "</a>");

						UserTotalStats_LI.eq(0).html("<a href='" + d.User.ProfileQuestionsUrl + "' class='Track_UStats_Questions_All_Hover'>" + d.User.Stats.QuestionCount.AllTime + "</a>");
						UserTotalStats_LI.eq(1).html("<a href='" + d.User.ProfileAnswersUrl + "' class='Track_UStats_Questions_All_Hover'>" + d.User.Stats.AnswersCount.AllTime + "</a>");
						UserTotalStats_LI.eq(2).html("<a href='" + d.User.ProfileHelpfulAnswersUrl + "' class='Track_UStats_Questions_All_Hover'>" + d.User.Stats.HelpfulAnswers.AllTime + "</a>");
						UserTotalStats_LI.eq(3).html("<a href='" + d.User.ProfileFirstAnswersUrl + "' class='Track_UStats_Questions_All_Hover'>" + d.User.Stats.FirstToAnswerCount.AllTime + "</a>");
						UserTotalStats_LI.eq(4).html("<a href='" + d.User.ProfileCommentsUrl + "' class='Track_UStats_Questions_All_Hover'>" + d.User.Stats.CommentsCount.AllTime + "</a>");

						if (typeof (d.User.Badges) != "undefined") {
							var badgesHtml = "";
							for (var badge in d.User.Badges) {
								badgesHtml += "<a href='" + profileUrl + "' class='Track_UStats_Badge_" + badge + " UserStatsBadgeImg'><img src='" + d.User.Badges[badge] + "' width='28' height='28'/></a>";
							}
							userStatsPopup.find(".UserStatsPopupInner").css("height", "250px");
							userStatsPopup.css("height", "273px");

							userStatsPopup.find(".UserStatsBadgesDiv").html(badgesHtml);
							userStatsPopup.find(".UserStatsBadgesDiv").attr("class", "UserStatsBadges");
						}
						//userStatsPopup.find(".UserStatsTabWeek a").attr("class","");
						userStatsPopup.find(".UserStatsTabTotal a").trigger('click', ['notrack']);
						userStatsPopup.find(".UserStatsBadgesDiv").html(badgesHtml);
						var aolNameHtml = "";
						if (typeof (d.User.AOLScreenName) != "undefined") {
							aolNameHtml = "<img src='" + d.User.AOLImage + "' width='16' height='16' class='UserStatsScreenNameImage'/>";
							aolNameHtml += "<a href='mailto:" + d.User.AOLEmail + "' class='Track_UStats_screenname_user" + userId + " UserStatsScreenName'>" + d.User.AOLScreenName + "</a>";
							userStatsPopup.find(".UserStatsNameDiv").html(aolNameHtml);
							userStatsPopup.find(".UserStatsNameDiv").attr("class", "UserStatsName");
							if (typeof (d.User.Badges) != "undefined") {
								userStatsPopup.find(".UserStatsPopupInner").css("height", "290px");
								userStatsPopup.css("height", "313px");
							} else {
								userStatsPopup.find(".UserStatsPopupInner").css("height", "240px");
								userStatsPopup.css("height", "263px");
							}
						}

						if (typeof (d.User.OriginatingPartnerId) != "undefined") {
							var popupHeight = parseInt(userStatsPopup.css("height"));
							var officialHeight = 60;
							popupHeight = popupHeight + officialHeight;
							userStatsPopup.css("height", popupHeight + "px");

							var partnerName = d.User.PartnerName;
							var partnerURL = d.User.PartnerURL;
							var partnerLogoURL = d.User.PartnerLogoURL;

							var linkHTML;
							if (parseInt(d.User.OriginatingPartnerId) == 21091)
								linkHTML = "<a href='http://help.aol.com'>AOL Help</a> Moderator";
							else
								linkHTML = "Official <a href='" + partnerURL + "'>" + partnerName + "</a> Writer";
							userStatsPopup.find(".UserStatsLabelOfficial").html(linkHTML);

							var logoHTML = "<a href='" + partnerURL + "'>" + "<img src='" + partnerLogoURL + "' alt='" + partnerName + "' title='" + partnerName + "' /></a>";
							if (partnerLogoURL != "")
								userStatsPopup.find(".UserStatsPartnerLogo").html(logoHTML);

							userStatsPopup.find(".UserStatsOfficial").css("display", "block");
						} else if (d.User.IsOfficial) {
							var popupHeight = parseInt(userStatsPopup.css("height"));
							var officialHeight = 30;
							popupHeight = popupHeight + officialHeight;
							userStatsPopup.css("height", popupHeight + "px");
							var linkHTML = "<a href='http://aolanswers.com' title='AOL Answers'>AOL Answers</a> Staff Member";
							userStatsPopup.find(".UserStatsLabelOfficial").html(linkHTML);
							userStatsPopup.find(".UserStatsOfficial").css("display", "block");
							userStatsPopup.find(".UserStatsOfficial").css("height", "21px");
						}

						userStatsPopup.find(".UserStatsProfileUrl").attr("href", profileUrl);
						userStatsPopup.find(".UserStatsPopupInner").css("background-image", "none");
						yedda_oltrack(userStatsPopup.find("a"));
						userStatsPopup.find(".UserStatsPopupContent").show();

						AA.UI.UserStatsControl.Popup.Config.PopupState = "opened";
					}
				});

			} else {
				userStatsPopup.css("top", objOffset.top - 15);
				if ((objOffset.left + userStatsPopup.width() + 80) > bodyWidth) {
					userStatsPopup.css("left", objOffset.left - userStatsPopup.width() - 30);
					userStatsPopup.addClass("UserStatsPopupOL");

				} else {
					userStatsPopup.css("left", objOffset.left + objWidth + 25);
					userStatsPopup.removeClass("UserStatsPopupOL");
				}

				userStatsPopup.show();
				AA.UI.UserStatsControl.Popup.Config.PopupState = "opened";

			}
            var _gaq = _gaq || [];
            _gaq.push(['_trackEvent', 'UserStatsPopup', 'Pop']);
		},

		MouseLeave: function () {
			clearTimeout(AA.UI.UserStatsControl.Popup.Config.PopupTimeoutId);
			clearInterval(AA.UI.UserStatsControl.Popup.Config.PopupInterval);
			AA.UI.UserStatsControl.Popup.Config.PopupState = "closed";
			AA.UI.UserStatsControl.Popup.Config.PopupInterval = setInterval(
                function () {
                	if (AA.UI.UserStatsControl.Popup.Config.PopupState == "closed") {
                		$(".UserStatsPopup").hide();
                		clearInterval(AA.UI.UserStatsControl.Popup.Config.PopupInterval);
                	}
                },
                700);
		},

		BindEvent: function (params) {

			// disable the feature for IE6
			if ($.browser.msie && $.browser.version == 6.0) { return false; }

			if (params.timeout) {
			    AA.UI.UserStatsControl.Popup.Config.PopupTimeout = params.timeout;
			}
			var counter = 0;
            var context = $("body");
            if (params.context) {
                context = params.context;                
            }

			var userStatsTemplate = $(".UserStatsPopup");
			var popupWidth = userStatsTemplate.width();
			var popupHeight = userStatsTemplate.height();
			$(".UserIconOuter", context).not(".NoStatsPopup .UserIconOuter").hover(function () {                                
				$(".UserStatsPopup").hide();

				var p = {
					obj: $(this),
					template: userStatsTemplate,
					boxWidth: popupWidth,
					boxHeight: popupHeight,
					count: counter
				}

				AA.UI.UserStatsControl.Popup.Config.PopupTimeoutId = setTimeout(function () {
					AA.UI.UserStatsControl.Popup.MouseEnter(p);
				},

                AA.UI.UserStatsControl.Popup.Config.PopupTimeout);
	            counter++;
                return false;
			}, function () {
				AA.UI.UserStatsControl.Popup.MouseLeave();
			});
		}
	}
}

//AA.UI.UserStatsControl.InitTabs("#ContentRight");


Yedda1 = {}
Yedda1.Api = {}
Yedda1.Api.InternalAjax = {}

Yedda1.Api.InternalAjax.SSO = function () {
    Yedda.Api.InternalAjax.SSO.initializeBase(this);
    this._timeout = 0;
    this._userContext = null;
    this._succeeded = null;
    this._failed = null;
}
Yedda1.Api.InternalAjax.SSO.ajaxRoot = "";

Yedda1.Api.InternalAjax.SSO.HandleOpenAuthToken = function (token, onSuccess, onFailed, userContext) {
    $.ajax({
        type: "GET",
        url: Yedda1.Api.InternalAjax.SSO.ajaxRoot + "/api/internal/sso/sso.asmx/HandleOpenAuthToken",
        data: { token: token },
        success: onSuccess,
        error: onFailed
    });
}

function sso_aol_succ(data) {    
    if (data) {
        if (Yedda1.Api.InternalAjax.SSO.UseRSPAuth) {
            AA.Utils.setCookie(".YEDDARSP", AA.Utils.getCookie(".YEDDAAUTH") + AA.Utils.getCookie("RSP_LOCAL_STARTPAGE.AOL.COM"), null);
            if (typeof (AA_Gallery) != "undefined") {
                AA_Gallery.InitCurrentUserDetails();
            }
        }
        else {
            window.location.reload();
        }
    }                    
}

function sso_aol_tcb(jsonData) {
    if (jsonData.response.statusCode == 200) {
        Yedda1.Api.InternalAjax.SSO.HandleOpenAuthToken(jsonData.response.data.token.a, sso_aol_succ);
    }
}

function sso_aol_er(url) {
    nc = '&nc=' + (new Date()).getTime();
    var so = document.createElement("script");
    so.setAttribute("type", "text/javascript");
    so.setAttribute("charset", "utf-8");
    so.setAttribute("src", url + nc);
    so.setAttribute("id", this.scriptId);

    var head = document.getElementsByTagName("head").item(0);
    head.appendChild(so);
}
    
function sso_aol_init(ajaxRoot, UseRSPAuth) {
    var yeddaCallAuth = document.cookie.indexOf('.YEDDAAUTH') == -1 && document.cookie.indexOf('ydcaa') == -1;
    Yedda1.Api.InternalAjax.SSO.UseRSPAuth = UseRSPAuth;

    if (UseRSPAuth && !yeddaCallAuth) {
        /*var yeddaRSP = AA.Utils.getCookie('.YEDDARSP');
        var yeddaAuth = AA.Utils.getCookie('.YEDDAAUTH');
        var rsp_cookie = AA.Utils.getCookie('RSP_LOCAL_STARTPAGE.AOL.COM');  
        
        if (yeddaRSP != yeddaAuth + rsp_cookie) {
            yeddaCallAuth = true;
        }*/
        yeddaCallAuth = true;
        
    }
    if (yeddaCallAuth) {
        Yedda1.Api.InternalAjax.SSO.ajaxRoot = ajaxRoot;
        sso_aol_er('https://api.screenname.aol.com/auth/getToken?devId=er1hOPs2u9PvD0Jn&f=json&c=sso_aol_tcb');
    }
}
function opaqueEmbeddeVideo() {
    // loop through every embed tag on the site
    var embeds = document.getElementsByTagName('embed');
    for (i = 0; i < embeds.length; i++) {
        embed = embeds[i];
        var new_embed;
        // everything but Firefox & Konqueror
        if (embed.outerHTML) {
            var html = embed.outerHTML;
            // replace an existing wmode parameter
            if (html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
                new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i, "wmode='transparent'");
            // add a new wmode parameter
            else
                new_embed = html.replace(/<embed\s/i, "<embed wmode='transparent' ");
            // replace the old embed object with the fixed version
            embed.insertAdjacentHTML('beforeBegin', new_embed);
            embed.parentNode.removeChild(embed);
        } else {
            // cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
            new_embed = embed.cloneNode(true);
            if (!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase() == 'window')
                new_embed.setAttribute('wmode', 'transparent');
            embed.parentNode.replaceChild(new_embed, embed);
        }
    }
    // loop through every object tag on the site
    var objects = document.getElementsByTagName('object');
    for (i = 0; i < objects.length; i++) {
        object = objects[i];
        var new_object;
        // object is an IE specific tag so we can use outerHTML here
        if (object.outerHTML) {
            var html = object.outerHTML;
            // replace an existing wmode parameter
            if (html.match(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")[a-zA-Z]+('|")\s*\/?\>/i))
                new_object = html.replace(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")window('|")\s*\/?\>/i, "<param name='wmode' value='transparent' />");
            // add a new wmode parameter
            else
                new_object = html.replace(/<\/object\>/i, "<param name='wmode' value='transparent' />\n</object>");
            // loop through each of the param tags
            var children = object.childNodes;
            for (j = 0; j < children.length; j++) {
                try {
                    if (children[j] != null) {
                        var theName = children[j].getAttribute('name');
                        if (theName != null && theName.match(/flashvars/i)) {
                            new_object = new_object.replace(/<param\s+name\s*=\s*('|")flashvars('|")\s+value\s*=\s*('|")[^'"]*('|")\s*\/?\>/i, "<param name='flashvars' value='" + children[j].getAttribute('value') + "' />");
                        }
                    }
                }
                catch (err) {
                }
            }
            // replace the old embed object with the fixed versiony
            object.insertAdjacentHTML('beforeBegin', new_object);
            object.parentNode.removeChild(object);
        }
    }
}

opaqueEmbeddeVideo();
var gafc_ads_used = 0;
var gafc_ads = new Array();

function get_ad() {
    if (gafc_ads_used <= gafc_ads.length - 1) {
        var ad = gafc_ads[gafc_ads_used];
        gafc_ads_used++;
        return ad;
    } else {
        return null;
    }
}

function afc_add_style1() {
    var css = '\
.abt { font-size: 0.9em; font-weight: normal; margin-top: 5px; } \
.abt h3 { text-decoration: none; margin-top: 5px;} .abtsl { float: right } \
.abt a { color: #6F6F6F; background-color: transparent; } \
.abt a:hover { color: #6F6F6F; background-color: transparent; } \
.afcadmaincontainer { line-height: 1.167; clear: both; padding-bottom: 16px;} \
.afcadmaincontainerwide {padding-bottom: 0 !important;} \
.afcadmaincontainer ul { list-style-type: none; padding-left: 0; margin-top: -5px; } \
.afcadmaincontainer b { font-style: normal; font-weight: bold; } \
.afcadimg {  float:left; margin-right: 10px; } \
.afcadtitle a:hover { background-color: transparent; color: #097BA5; } \
.afcaddesc a:hover { background-color: transparent; color: #000000; text-decoration: none; } \
.afcaddesc a { color: #000000; } \
.afcadurl a:hover { background-color: transparent; text-decoration: none; } \
.afcadcontainer { margin-top: 10px; } \
.afcadtitle h3 { font-size: 1.4em; text-decoration: none; color: #0033FF; font-weight: normal; white-space: normal; } \
';
    var s = document.createElement('style');
    s.setAttribute("type", "text/css");
    if (s.styleSheet) {
        s.styleSheet.cssText = css;
    } else {
        var cssText = document.createTextNode(css)
        s.appendChild(cssText);
    }
    document.getElementsByTagName("head")[0].appendChild(s);
}

function afc_render(num_of_ads, containerId, wideFormat,attachImages) {
    var ads = new Array();
    var c = 0;
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_ad();
        c++;
    }

    if (ads != null && ads.length > 0) {
        var container = document.getElementById(containerId);
        if (container) {
            var adsContent = "";
            for (i = 0; i < ads.length; i++) {
                if (ads[i] != null) {
                    var a = ads[i];

                    var title = "";
                    var line1 = "";
                    var line2 = "";
                    if (typeof (a.title) != "undefined") {
                        title = a.title;
                        line1 = a.line1;
                        line2 = a.line2;
                    } else {
                        title = a.line1;
                        line1 = a.line2;
                        line2 = a.line3;
                    }

                    var adFormat = "";

                    if (!wideFormat) {
                        adFormat = '<span class="afcaddesc aaadt"><a href="' + a.url + '">' + line1 + '</a></span><br/>';
                        adFormat += '<span class="afcaddesc aaadt"><a href="' + a.url + '">' + line2 + '</a></span><br/>';
                    } else {
                        adFormat = '<span class="afcaddesc aaadt"><a href="' + a.url + '">' + line1 + '</a>&nbsp;<a href="' + a.url + '">' + line2 + '</a></span><br/>';
                    }

                    var ad = '<li><div class="afcadcontainer">';
                    if (attachImages) {
                        if ((typeof (afc_ads_images) != 'undefined')) {
                            if (afc_ads_images.length > 0) {
                                index = 0
                                if (afc_ads_images.length > i) {
                                    index = i;
                                }
                                url = afc_ads_images[i];
                                ad = ad + '<div class="UserIconOuter afcadimg"><div class="UserIcon vcard"><img width="48px" src="' + url + '" class="userIconImage photo"/></div></div>';
                            }
                        }
                    }
                    ad = ad + '<span class="afcadtitle"><h3><a class="aaadt" href="' + a.url + '">' + title + '</a></h3></span>' +
                    adFormat +
                    '<span class="afcadurl"><a class="aaadt" href="' + a.url + '">' + a.visible_url + '</a></span>' +
                    '</div></li>';

                    adsContent += ad;
                }
            }

            if (attachImages) {
                afcadmaincontainer = 'afcadmaincontainer afcadmaincontainerwide';
            } else {
                afcadmaincontainer = 'afcadmaincontainer';
            }

            if (adsContent != null && adsContent != '') {
                container.innerHTML = '<div class="' + afcadmaincontainer  + '"><h3 class="abt"><a class="abtsl" href="/about/sponsoredlinks">Sponsored Links</a></h3><ul>' + adsContent + '</ul></div>';
            }
        }
    }
}

function render_question(rr_cid, mr_cid) {
    if (rr_cid != null && rr_cid != '') {
        afc_render(4, rr_cid);
    }
    if (mr_cid != null && mr_cid != '') {
        afc_render(3, mr_cid);
    }
}

function render_answer() {

}

function google_ad_request_done(google_ads) {
    gafc_ads = google_ads;
    if (typeof (yedda_afc_render) != 'undefined') {
        if (gafc_ads != null && typeof (gafc_ads.length) != 'undefined' && gafc_ads.length > 0) {
            yedda_afc_render();
        }
    }
}

var sch = 'afc-uk-vertical';
var ssch = 'aolanswers'; // Should be set for each partner

function yedda_init_slm_afc_values(isch, issch) {
    params.sch = isch;
    params.ssch = issch;
}

function yedda_use_slm_afc() {
    yedda_init_slm_afc();
    params.snum = google_max_num_ads;
    //params.surl='http://yellowpages.aol.com/video-recorders-and-players-renting/ny/new-york/';       // surl for contents based ads
    params.of = 'js';
    params.callback = 'yedda_done_slm_afc';
    params.rv = '1.2';
    params.stest = 'off'; //google_adtest; //Set this to "off" for production
    //params.targeting = 'site'; //Set this to site, content, or site_content
    params.surl = window.location;
    get_links();
}

function yedda_done_slm_afc(sponsorData) {
    gafc_ads = yedda_done_slm(sponsorData);
    yedda_afc_render();
}

function yedda_done_slm(sponsorData) {
    // convert the format into gafc_ads
    var adsArray = new Array(); ;
    if (sponsorData.length > 0) {

        for (i = 0; i < sponsorData.length; i++) {
            var newad = new Object();
            newad.url = sponsorData[i].redirect_url;
            newad.visible_url = sponsorData[i].url;

            if (typeof (sponsorData[i].title) == "undefined") {
                newad.title = sponsorData[i].title;
                newad.line1 = sponsorData[i].d1;
                newad.line2 = sponsorData[i].d2;
            }
            else {
                newad.title = sponsorData[i].d1;
                newad.line1 = sponsorData[i].d2;
                newad.line2 = sponsorData[i].d3;
            }

            adsArray[i] = newad;
        }

    }
    return adsArray;

}
	

AA.Explore = {
    RecentQNATabs_Init : function() {
        $("#ExploreListsContainer ul.RecentLinks li a").click(function() {                           
          var ind = $("#ExploreListsContainer ul.RecentLinks li a").index($(this));          
          $("#ExploreListsContainer .ExploreList").hide();
          $("#ExploreListsContainer .ExploreList").eq(ind).show();
          $("#ExploreListsContainer ul.RecentLinks li a").removeClass("InactiveLink");
          $(this).addClass("InactiveLink");
          return false;
        });    
    },
    
    TagCloudTabs_Init : function() {
        $(".ExploreSidebar ul li a").click(function() {
          var ind = $(".ExploreSidebar ul li a").index($(this));          
          $(".ExploreSidebar .ExploreTagCloudDiv").hide();
          $(".ExploreSidebar .ExploreTagCloudDiv").eq(ind).show();
          $(".ExploreSidebar ul li a").removeClass("InactiveLink");
          $(this).addClass("InactiveLink");
          return false;            
        });
    },
    
    SmallSearchBox_Init : function() {       
        var questionText = $(".SearchBoxSmall .TextSearchBoxWrapper input");
        var orgValue = questionText.val();

        questionText.click(function() { 
            if ($(this).val() == orgValue) {
                $(this).val("").css("color","#000");
            }
        });                                       
    }
}

AA.Explore.RecentQNATabs_Init();
AA.Explore.TagCloudTabs_Init();
AA.Explore.SmallSearchBox_Init();
AA.VoteHelper = {
    Vote: function (i) {
        var e = jQuery(i);

        if (!e.is(".working")) {
            e.addClass('working');

            var v = 3
            if (e.is(".HelpfulSelected")) {
                v = 3;
            } else {
                v = 4;
            }

            e.parent().append("<div class='aavoteloadingwrapper'><img class='aavoteloading' src='" + AA.VoteHelper.animateUrl + "' /></div>");

            var postid = e.attr("postid");

            jQuery.ajax({
                type: "GET",
                cache: false,
                async: true,
                url: AA.VoteHelper.ajaxRoot + "/api/internal/Vote.ashx",
                data: "qid=" + AA.QuestionId + "&postid=" + postid + "&v=" + v
            });

            if (v == 3) {
                setTimeout(function () {
                    e.removeClass('HelpfulSelected');
                    e.removeClass('working');
                    jQuery(".aavoteloadingwrapper", e.parent()).remove();
                    var voteValue = e.find("span");
                    var cv = voteValue.html();
                    cv = cv.substring(1, cv.length - 1);
                    voteValue.html("(" + (parseInt(cv) - 1) + ")");
                }, 500);
            } else if (v == 4) {
                setTimeout(function () {
                    e.addClass('HelpfulSelected');
                    e.removeClass('working');
                    jQuery(".aavoteloadingwrapper", e.parent()).remove();
                    var voteValue = e.find("span");
                    var cv = voteValue.html();
                    cv = cv.substring(1, cv.length - 1);
                    voteValue.html("(" + (parseInt(cv) + 1) + ")");
                }, 500);
            }
        }
        //setTimeout(function() { AA.VoteHelper.track(window.location.href, e.attr("href"), "Track_" + AA.UserId + "_" + postid) }, 200);
    },

    Init: function (animateUrl, ajaxRoot) {
        AA.VoteHelper.animateUrl = animateUrl;        
        AA.VoteHelper.ajaxRoot = ajaxRoot ? ajaxRoot : "";

        if (typeof (Yedda) != 'undefined' && typeof (Yedda.Api) != 'undefined' && typeof (Yedda.Api.Internal) != 'undefined' && typeof (Yedda.Api.Internal.Tracking) != 'undefined' && typeof (Yedda.Api.Internal.Tracking.OutgoingLinksTracker) != 'undefined') {
            hasService = true;
            AA.VoteHelper.track = Yedda.Api.Internal.Tracking.OutgoingLinksTracker.Track;
        }

        jQuery(".aavote").each(function (i) {
            jQuery(this).click(function (event) {
                event.preventDefault();
                AA.VoteHelper.Vote(this);
                return false;
            });
        });
    }
};
var nAdsUsed = 0;
var wAdsUsed = 0;
var nAds = new Array();
var wAds = new Array();

function get_narrow_ad() {
    if (nAdsUsed <= nAds.length - 1) {
        var ad = nAds[nAdsUsed];
        nAdsUsed++;
        return ad;
    } else {
        return null;
    }
}

function set_wide_ads_array(newWideArray) {
    wAds = newWideArray;
}

function get_wide_ad() {
    if (wAdsUsed <= wAds.length - 1) {
        var ad = wAds[wAdsUsed];
        wAdsUsed++;
        return ad;
    } else {
        return null;
    }
}

function get_ads_count(ads) {
    if (ads) {
        return ads.length;
    }

    return 0;
}

function get_narrow_ads_count() {
    return get_ads_count(nAds);
}

function get_wide_ads_count() {
    return get_ads_count(wAds);
}

function get_ad_by_index(ads, index) {
    if (ads && ads.length > 0) {
        return ads[index];
    }

    return null;
}

function get_narrow_ads_by_index(index) {
    return get_ad_by_index(nAds, index);
}

function get_wide_ads_by_index(index) {
    return get_ad_by_index(wAds, index);
}

function afs_add_style1() {
    var css = ".abt { font-size: 0.9em; font-weight: normal; margin-top: 5px; } .abt h3 { text-decoration: none;} .abtsl { float: right } .abt a { color: #6F6F6F; background-color: transparent; } .abt a:hover { color: #6F6F6F; background-color: transparent; } .adtopcontainer { background-color: #F4F9FC; line-height: 1.167; clear: both; float: left; padding: 5px; width: 100%;} .adtopcontainer ul { float: left;list-style-type: none; padding-left: 0; } .adtopcontainer b { font-style: normal; font-weight: bold; } .adtopcontainer ul li { cursor:pointer; cursor:hand; display: inline; } .adtitle a:hover { background-color: transparent; color: #097BA5; } .addesc a:hover { background-color: transparent; color: #000000; text-decoration: none; } .addesc a { color: #000000; } .adurl a { color: #008000; } .adurl a:hover { color: #008000; background-color: transparent; text-decoration: none; } .adcontainer { clear: both; display: inline; float: left; margin-bottom: 10px; width:100% } .adtitle h3 { font-size: 1.4em; text-decoration: none; color: #0033FF; font-weight: normal; white-space: normal; } #SolarSearchResultContainer{clear: both; float: left; width: 100%;}";
    var s = document.createElement('style');
    s.setAttribute("type", "text/css");
    if (s.styleSheet) {
        s.styleSheet.cssText = css;
    } else {
        var cssText = document.createTextNode(css)
        s.appendChild(cssText);
    }
    document.getElementsByTagName("head")[0].appendChild(s);
}

function afs_add_style2() {
    var css = ".abt2 { font-size: 0.9em; font-weight: normal; margin: 0; } .abt2 h3 { text-decoration: none; } .abtsl2 { float: right } .abt2 a { color: #6F6F6F; background-color: transparent; } .abt2 a:hover { color: #6F6F6F; background-color: transparent; } .adrightrailcontainer2 { line-height: 1.167; clear: both; padding: 5px; width: 300px; float: left;} .adrightrailcontainer2 ul { list-style-type: none; padding-left: 0; } .adrightrailcontainer2 b { font-style: normal; font-weight: bold; } .adtitle2 a:hover { background-color: transparent; color: #097BA5; } .addesc2 a:hover { background-color: transparent; color: #000000; text-decoration: none; } .addesc2 a { color: #000000; } .adurl2 a { color: #008000; } .adurl2 a:hover { color: #008000; background-color: transparent; text-decoration: none; } .adcontainer2 { margin-top: 10px; } .adtitle2 h3 { font-size: 1.4em; text-decoration: none; color: #0033FF; font-weight: normal; white-space: normal; }";
    var s = document.createElement('style');
    s.setAttribute("type", "text/css");
    if (s.styleSheet) {
        s.styleSheet.cssText = css;
    } else {
        var cssText = document.createTextNode(css)
        s.appendChild(cssText);
    }
    document.getElementsByTagName("head")[0].appendChild(s);
}

function afs_render_sl_right1(num_of_ads, ad_type, container_id) {
    var container = document.getElementById(container_id);
    if (!container) {
        return;
    }

    var ads = new Array();
    var c = 0;
    var get_ad = null;
    if (ad_type == "wide") {
        get_ad = get_wide_ad;
    } else {
        get_ad = get_narrow_ad;
    }
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_ad();
        c++;
    }

    if (ads != null && ads.length > 0) {
        var adsContent = "";
        for (i = 0; i < ads.length; i++) {
            if (ads[i] != null) {
                var a = ads[i];
                var title = "";
                var line1 = "";
                var line2 = "";
                if (typeof(a.title) != "undefined") {
                    title = a.title;
                    line1 = a.line1;
                    line2 = a.line2;
                } else {
                    title = a.line1;
                    line1 = a.line2;
                    line2 = null;
                }

                var line2Html = (line2 != null && line2.length > 0) ? '<span class="addesc2"><a href="' + a.url + '">' + line2 + '</a></span><br/>' : "";
                var ad = '<li><div class="adcontainer2">' +
                    '<span class="adtitle2"><h3><a href="' + a.url + '">' + title + '</a></h3></span>' +
                    '<span class="addesc2"><a href="' + a.url + '">' + line1 + '</a></span><br/>' +
                    line2Html + 
                    '<span class="adurl2"><a href="' + a.url + '">' + a.visible_url + '</a></span>' +
                    '</div></li>';

                adsContent += ad;
            }
        }

        if (adsContent != '') {
            container.innerHTML = '<div class="adrightrailcontainer2"><h3 class="abt2"><a class="abtsl2" href="/about/sponsoredlinks">Sponsored Links</a></h3><ul>' + adsContent + '</ul></div>';
        }
    }
}

function afs_render_sl_top1(num_of_ads, ad_type, container_id) {
    var container = document.getElementById(container_id);
    if (!container) {
        return;
    }

    var ads = new Array();
    var c = 0;
    var get_ad = null;
    if (ad_type == "wide") {
        get_ad = get_wide_ad;
    } else {
        get_ad = get_narrow_ad;
    }
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_ad();
        c++;
    }

    if (ads != null && ads.length > 0) {
        var adsContent = "";
        for (i = 0; i < ads.length; i++) {
            if (ads[i] != null) {
                var a = ads[i];
                var title = "";
                var line1 = "";
                var line2 = "";
                if (typeof (a.title) != "undefined") {
                    title = a.title;
                    line1 = a.line1;
                    line2 = a.line2;
                } else {
                    title = a.line1;
                    line1 = a.line2;
                    line2 = null;
                }

                var line2Html = (line2 != null && line2.length > 0) ? '&nbsp;<a href="' + a.url + '">' + line2 + '</a>' : "";
                var ad = '<li><div class="adcontainer">' +
                    '<span class="adtitle"><h3><a href="' + a.url + '">' + title + '</a></h3></span>' +
                    '<span class="addesc"><a href="' + a.url + '">' + line1 + '</a>' + line2Html + '</span><br/>' +                     
                    '<span class="adurl"><a href="' + a.url + '">' + a.visible_url + '</a></span>' +
                    '</div></li>';

                adsContent += ad;
            }
        }

        if (adsContent != '') {
            container.innerHTML = '<div class="adtopcontainer"><h3 class="abt"><a class="abtsl" href="/about/sponsoredlinks">Sponsored Links</a></h3><ul>' + adsContent + "</ul></div>";
            jQuery(container).find("li").each(function() {
                $(this).click(function() {
                    var l = $(this).find(".adtitle h3 a");
                    if (l && l.length > 0) {
                        window.location = l[0].href;
                    }
                });
            });
        }
    }
}

function afs_render_sl_search1(max_number_of_ads, ad_type, container_id) {
    var container = document.getElementById(container_id);
    if (!container) {
        return;
    }   

    var ads = new Array();
    var c = 0;
    var get_ad = null;
    var max_available_ads = 0;
    if (ad_type == "wide") {
        get_ad = get_wide_ads_by_index;
        max_available_ads = get_wide_ads_count();
    } else {
        get_ad = get_narrow_ads_by_index;
        max_available_ads = get_narrow_ads_count();
    }

    var max = max_number_of_ads;    
    if (max > max_available_ads) {
        max = max_available_ads;
    }
    
    for (i = 0; i < max; i++) {
        ads.push(get_ad(i));        
    }

    if (ads != null && ads.length > 0) {
        var adsContent = "";
        for (i = 0; i < ads.length; i++) {
            if (ads[i] != null) {
                var a = ads[i];
                var title = "";
                var line1 = "";
                var line2 = "";
                if (typeof (a.title) != "undefined") {
                    title = a.title;
                    line1 = a.line1;
                    line2 = a.line2;
                } else {
                    title = a.line1;
                    line1 = a.line2;
                    line2 = null;
                }

                var adFormat = "";

                if (ad_type == "wide") {
                    var line2Html = (line2 != null && line2.length > 0) ? '&nbsp;<span class="addesc"><a href="' + a.url + '">' + line2 + '</a></span>' : "";
                    adFormat = '<span class="addesc"><a href="' + a.url + '">' + line1 + '</a>' + line2Html + '</span><br/>';                    
                }
                                
                var ad = '<li><div class="adcontainer">' +
                    '<span class="adtitle"><h3><a href="' + a.url + '">' + title + '</a></h3></span>' +
                    adFormat +                   
                    '<span class="adurl"><a href="' + a.url + '">' + a.visible_url + '</a></span>' +
                    '</div></li>';

                adsContent += ad;
            }
        }

        if (adsContent != '') {
            container.innerHTML = '<div class="adtopcontainer"><h3 class="abt"><a class="abtsl" href="/about/sponsoredlinks">Sponsored Links</a></h3><ul>' + adsContent + "</ul></div>";
            jQuery(container).find("li").each(function() {
                $(this).click(function() {
                    var l = $(this).find(".adtitle h3 a");
                    if (l && l.length > 0) {
                        window.location = l[0].href;
                    }
                });
            });            
        }
    }
}


function afs_render_160x600(num_of_ads, containerId) {    
    var ads = new Array();
    var c = 0;
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_wide_ad();
        c++;
    }

    if (ads != null && ads.length > 0) {
        var container = document.getElementById(containerId);
        if (container) {
            var adsContent = "";
            for (i = 0; i < ads.length; i++) {
                if (ads[i] != null) {
                    var ad =
                    '<tr>' +
                    '<td width="158" valign="middle" height="116" align="left">' +
                    '<table width="158" height="114" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff">' +
                    '<tbody>' +
                    '<tr>' +
                    '<td valign="center" class="ch">' +
                    '<div style="overflow: hidden; width: 153px; padding-left: 2px;">' +
                    '<a target="_top" href="' + ads[i].url + '">' + ads[i].line1 + '</a><br>' +
                    '<font style="font-size: 13px;">' + ads[i].line2 + '<br></font>' +
                    '<font color="#008000" style="font-size: 10px;">' + ads[i].visible_url + '</font>' +
                    '</div>' +
                    '</td>' +
                    '</tr>' +
                    '</tbody>' +
                    '</table>'
                    '</td>' +
                    '</tr>';

                    adsContent += ad;
                }
            }

            if (adsContent != null && adsContent != '') {
                container.innerHTML =
                    '<table width="160" height="600" cellspacing="1" cellpadding="0" border="0" bgcolor="FFFFFF">' +
                    '<tbody>' +
                    '<tr><td width="158" height="13" align="left" valign="middle"><a href="" target="_blank" style="font-size:11px;line-height:13px;color:#000000">Ads by Google</a></td></tr>' +
                    '<tr><td width="158" valign="top">' +
                    '<table width="158" cellpadding="0" cellspacing="0" border="0">' +
                    '<tbody>' +
                    adsContent +
                    '</tbody>' +
                    '</table>' +
                    '</td></tr>' +
                    '</tbody>' +
                    '</table>';
            }
        }
    }
}

function afs_render_300x250(num_of_ads, containerId) {
    var ads = new Array();
    var c = 0;
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_wide_ad();
        c++;
    }
    
    if (ads != null && ads.length > 0) {
        var container = document.getElementById(containerId);
        if (container) {
            var adsContent = "";
            for (i = 0; i < ads.length; i++) {
                if (ads[i] != null) {
                    var ad =
                    '<tr>' +
                    '<td bgcolor="#FFFFFF" aligh="left" valign="center" class="ch">' +
                    '<div style="overflow:hidden;width:296px;padding-left:2px">' +
                    '<font style="line-height:14px;font-size:11px;">' +
                    '<a href="' + ads[i].url + '" target="_top">' + ads[i].line1 + '</a><br/>' +
                    '</font>' +
                    '<font style="line-height:14px;font-size:11px">' + ads[i].line2 + '<br/></font>' +
                    '<font style="line-height:14px;font-size:10px" color="#008000">' + ads[i].visible_url + '</font>' +
                    '</div>' +
                    '</td>' +
                    '</tr>';

                    adsContent += ad;
                }
            }

            if (adsContent != null && adsContent != '') {
                container.innerHTML =
                    '<table width="300" height="250" cellspacing="1" cellpadding="0" border="0" bgcolor="FFFFFF">' +
                    '<tbody>' +
                    '<tr><td width="298" height="13" align="left" valign="middle"><a href="" target="_blank" style="font-size:11px;color:#000000">Ads by Google</a></td></tr>' +
                    adsContent + 
                    '</tbody>' +
                    '</table>';
            }
        }
    }
}

function afs_render_468x60(num_of_ads, containerId) {
    var ads = new Array();
    var c = 0;
    for (i = 0; i < num_of_ads; i++) {
        ads[c] = get_narrow_ad();
        c++;
    }
    
    if (ads != null && ads.length == 2) {
        var container = document.getElementById(containerId);
        if (container) {
            var adsContent = "";
            for (i = 0; i < ads.length; i++) {
                if (ads[i] != null) {
                    var ad =
							'<td width="229" height="41" align="left" valign="top" class="ch">' +
							'<font style="font-size:11px;line-height:14px;">' +
							'<a href="' + ads[i].url + '" target="_top">' + ads[i].line1 + '</a>' +
							'</font>' +
							'<br/>' +
							'<font style="font-size:10px;line-height:12px">' + ads[i].line2 + '<br/>' + ads[i].line3 + '</font>' +
							'</td>';
                    adsContent += ad;
                }
            }

            if (adsContent != null && adsContent != '') {
                container.innerHTML =
							'<table width="468" height="60" cellspacing="1" cellpadding="0" border="0" bgcolor="#f4f9fc">' +
							'<tbody><tr><td>' +
							'<table width="466" height="58" cellspacing="0" cellpadding="1" border="0" bgcolor="#f4f9fc">' +
							'<tbody><tr><td>' +
							'<table width="464" cellspacing="0" cellpadding="2" border="0">' +
							'<tbody><tr>' + adsContent + "</tr></tbody>" +
							'</table>' +
							'</td></tr>' +
							'<tr><td nowrap="" width="99%" height="11" align="right" bgcolor="#f4f9fc"><a href="" target="_blank" style="font-size:10px;line-height:13px;color:#000000">Ads by Google</a></td></tr>' +
							'</tbody></table>' +
							'</td></tr></tbody></table>';
            }
        }
    }
}

function google_afs_request_done(google_ads) {    
    var nAdsCount = 0;
    var wAdsCount = 0;

    for (i = 0; i < google_ads.length; i++) {
        var isNarrow = google_ads[i].type == "text/narrow"
        if (isNarrow) {
            nAds[nAdsCount] = google_ads[i];
            nAdsCount++;
        } else {
            wAds[wAdsCount] = google_ads[i];
            wAdsCount++;
        }
    }

    if (typeof (yedda_afs_render) != 'undefined') {
        yedda_afs_render()
    }
}

function google_afs_add_default_style() {
    var css = ".ch{cursor:pointer;cursor:hand}body,td,div,.p,a{font-family:arial,sans-serif}a{font-size:13px}a:link,.w,a.w:link,.w a:link{color:#0000cc}a:visited,.fl:visited{color:#0000cc}a:active,.fl:active{color:#0000cc} .ch a {background-color:transparent; text-decoration: underline;} .ch:hover {background-color:transparent; text-decoration: none;}";
    var s = document.createElement('style');
    s.setAttribute("type", "text/css");
    if (s.styleSheet) {
        s.styleSheet.cssText = css;
    } else {
        var cssText = document.createTextNode(css)
        s.appendChild(cssText);
    }	
	document.getElementsByTagName("head")[0].appendChild(s);
}

var sch = 'afs-uk-vertical';
var ssch = 'aolanswers'; // Should be set for each partner

function yedda_init_slm_afs_values(isch, issch) {
    sch = isch;
    ssch = issch;
}

function yedda_use_slm_afs() {
    yedda_init_slm_afs();
    var e = document.createElement('script');

    // Get page number, default set to 1
    
    var page_number = null;

    var url = window.location.toString();

    if (url.indexOf("srpage") != -1) {
        page_number = AA.Utils.getQueryVariable("srpage");
    }

    else if (url.indexOf("/page") != -1) {
        var page_pattern = /page(\d+)/;
        var match = url.match(page_pattern);
        if (match != null) {
            page_number = match[1];
        }
    }

     else {
        page_number = AA.Utils.getQueryVariable("page");
    }
    
    if (!page_number) {                
        page_number = 1;
    }

    e.src = 'http://switcher.dmn.aol.com/sw/a?sch=' + sch + '&ssch=' + ssch + '&squery=' + google_afs_query + '&snum=' + google_afs_adcount + '&stest=off&callback=yedda_done_slm_afs&of=js&rv=1.2&spage='+page_number+'&ssafe=high';
    document.getElementById('asf-root').appendChild(e);
}

function yedda_done_slm_afs(sponsorData) {
    wAds = yedda_done_slm(sponsorData);
    yedda_afs_render();
}

function yedda_done_slm(sponsorData) {
    // convert the format into gafc_ads
    var adsArray = new Array(); ;
    if (sponsorData.length > 0) {

        for (i = 0; i < sponsorData.length; i++) {
            var newad = new Object();
            newad.url = sponsorData[i].redirect_url;
            newad.visible_url = sponsorData[i].url;            
            if (typeof(sponsorData[i].title) == "undefined") {
                newad.title = sponsorData[i].d1;
                newad.line1 = sponsorData[i].d2;
                newad.line2 = null;
            }
            else {
                newad.title = sponsorData[i].title;
                newad.line1 = sponsorData[i].d1;
                newad.line2 = sponsorData[i].d2;
            }
            adsArray[i] = newad;
        }

    }
    return adsArray;

}

AA.UI.LeadersBoard = function() {
    $(".LeaderBoard").each(function() {
        var tab1link = $(this).find(".LeadersBoardTab1Link a");
        var tab2link = $(this).find(".LeadersBoardTab2Link a");
        var tab1 = $(this).find(".LeadersBoardTab1");
        var tab2 = $(this).find(".LeadersBoardTab2");        
        
        tab1link.click(function() {  
            if (!$(this).hasClass("InactiveLink")) {          
                $(this).addClass("InactiveLink");
                tab2link.removeClass("InactiveLink");        
                tab2.hide();
                tab1.show();
            }
            return false;
        });    
        
        tab2link.click(function() {   
            if (!$(this).hasClass("InactiveLink")) {
                $(this).addClass("InactiveLink");
                tab1link.removeClass("InactiveLink");        
                tab1.hide();
                tab2.show();
                
            }
            return false;
        });        
        
    });
}

AA.UI.Ask = {
    askBaseUrl: null,
    askElementId: null,
    askElementValue: null,

    setBaseAskUrl: function (url) {
        this.askBaseUrl = url;
    },

    goToAsk: function (value, tags, track) {
        var queryindex = this.askBaseUrl.lastIndexOf("?");
        var querySign = "?";
        if (queryindex != -1) {
            querySign = "&";
        }
        var tagsText = "";
        if (tags != null && tags.length > 0) {
            tagsText = "&pstags=" + escape(AA.Utils.UTF8Encode(tags))
        }

        var trackText = "";
        if (track != null && track.length > 0) {
            trackText = "&src=" + track
        }

        var askUrl = this.askBaseUrl + querySign + "q=" + escape(AA.Utils.UTF8Encode(value)) + tagsText + trackText;

        window.location.href = askUrl;
    },

    Init: function (id, value, tags, track, buttonElement) {
        this.askElementId = "#" + id;
        this.askElementValue = value;

        var askElementId = this.askElementId;
        var askElementValue = this.askElementValue;

        $(this.askElementId).keypress(function (event) {
            if (event.keyCode == '13') {
                event.preventDefault();
                AA.UI.Ask.goToAsk($(askElementId).val(), tags, track);
            }
        });
        $(askElementId).focus(function () {

            if ($(this).val() == askElementValue) {
                $(this).val('');
            }
        });

        $(buttonElement).click(function () {
            var qt = $(askElementId);
            if (qt.length > 0) {
                if (qt.val() == askElementValue || qt.val() == "") {
                    qt.val('').focus();
                } else {
                    AA.UI.Ask.goToAsk(qt.val(), tags, track);
                }
            }

            return false;
        });
    }
};



var editorInFocus = false;

function toggleEditor(id, toggle) {
    if (toggle) {
        tinyMCE.execCommand('mceAddControl', false, id);
    } else {
        tinyMCE.execCommand('mceRemoveControl', false, id);
    }
}

function handle_execcommand(editor_id, elm, command, user_interface, value) {
    switch (command) {
        case "mceLink":
            if (typeof (trackUserActivity) != 'undefined' && typeof (scenarioState) != 'undefined')
                trackUserActivity('link_from_tinymce', typeof (scenarioState) != 'undefined' ? scenarioState : null, null);
            return false;
        case "mceImage":
            if (typeof (trackUserActivity) != 'undefined' && typeof (scenarioState) != 'undefined')
                trackUserActivity('image_from_tinymce', typeof (scenarioState) != 'undefined' ? scenarioState : null, null);
            return false;
        case "mceMedia":
            if (typeof (trackUserActivity) != 'undefined' && typeof (scenarioState) != 'undefined')
                trackUserActivity('video_from_tinymce', typeof (scenarioState) != 'undefined' ? scenarioState : null, null);
            return false;
        case "mceSpellCheck":
            if (typeof (trackUserActivity) != 'undefined' && typeof (scenarioState) != 'undefined')
                trackUserActivity('spellcheck_from_tinymce', typeof (scenarioState) != 'undefined' ? scenarioState : null, null);
            return false;
    }
}

function handle_event(e) {
    switch (e.type) {
        case "keypress":
            if (typeof (window.yedda_refresh) != 'undefined') {
                window.yedda_refresh = false;
            }

            if (typeof (Imonomy) != 'undefined' && typeof (Imonomy.tinyMCEAutoMatch) != 'undefined' && typeof (Imonomy.tinyMCEAutoMatch._typeEvent) != 'undefined' && Imonomy.tinyMCEAutoMatch._typeEvent != null) {
                Imonomy.tinyMCEAutoMatch._typeEvent(e);
            }
            if (typeof (yedda_richTextEditorOnMouseDown) != 'undefined' && yedda_richTextEditorOnMouseDown != null) {
                return yedda_richTextEditorOnMouseDown(e);
            }
            break;
        case "focus":
            editorInFocus = true;
            break;
        case "blur":
            editorInFocus = false;
            break;
    }
}

function tinymce_addlink() {
    trackUserActivity('link_from_yeddabar', null, null);
    tinyMCE.execInstanceCommand(tinyMCE.selectedInstance.editorId, 'mceLink');
    return false;
}
function tinymce_addimage() {
    trackUserActivity('image_from_yeddabar', null, null);
    tinyMCE.execInstanceCommand(tinyMCE.selectedInstance.editorId, 'mceImage');
    return false;
}
function tinymce_addvideo() {
    trackUserActivity('video_from_yeddabar', null, null);
    tinyMCE.execInstanceCommand(tinyMCE.selectedInstance.editorId, 'mceMedia');
    return false;
}    

function showShareLink(linktoShare) {
    HideMessages();

    var shareLink = document.getElementById(linktoShare);
    if (shareLink) {
        shareLink.style.display = "block";
        shareLink.focus();
        shareLink.select();
        document.getElementById("ShareMessageContainer").style.display = "block";
    }
}

function HideMessages() {
    document.getElementById("ShareMessageContainer").style.display = "none";
    var shareInputs = document.getElementById("ShareMenuInputContainer").getElementsByTagName("input");
    for (var i = 0; i < shareInputs.length; i++)
        shareInputs[i].style.display = "none";

}

