if (window.jQuery)(function ($) {
    $.extend($, {
        MultiFile: function (o) {
            return $("input:file.multi").MultiFile(o)
        }
    });
    $.extend($.MultiFile, {
        options: {
            accept: '',
            max: -1,
            error: function (s) {
                if ($.blockUI) {
                    $.blockUI({
                        message: s.replace(/\n/gi, '<br/>'),
                        css: {
                            border: 'none',
                            padding: '15px',
                            size: '12.0pt',
                            backgroundColor: '#900',
                            color: '#fff',
                            opacity: '.8',
                            '-webkit-border-radius': '10px',
                            '-moz-border-radius': '10px'
                        }
                    });
                    window.setTimeout($.unblockUI, 2000)
                } else {
                    alert(s)
                }
            },
            namePattern: '$name',
            STRING: {
                remove: 'remove',
                denied: 'You cannot select a $ext file.\nTry again...',
                selected: 'File selected: $file',
                duplicate: 'This file has already been selected:\n$file'
            }
        }
    });
    $.extend($.MultiFile, {
        disableEmpty: function (a) {
            var o = [];
            $('input:file').each(function () {
                if ($(this).val() == '') o[o.length] = this
            });
            return $(o).each(function () {
                this.disabled = true
            }).addClass(a || 'mfD')
        },
        reEnableEmpty: function (a) {
            a = a || 'mfD';
            return $('input:file.' + a).removeClass(a).each(function () {
                this.disabled = false
            })
        },
        autoIntercept: ['submit', 'ajaxSubmit', 'validate'],
        intercepted: {},
        intercept: function (b, c, d) {
            var e, value;
            d = d || [];
            if (d.constructor.toString().indexOf("Array") < 0) d = [d];
            if (typeof(b) == 'function') {
                $.MultiFile.disableEmpty();
                value = b.apply(c || window, d);
                $.MultiFile.reEnableEmpty();
                return value
            };
            if (b.constructor.toString().indexOf("Array") < 0) b = [b];
            for (var i = 0; i < b.length; i++) {
                e = b[i] + '';
                if (e)(function (a) {
                    $.MultiFile.intercepted[a] = $.fn[a] ||
                    function () {};
                    $.fn[a] = function () {
                        $.MultiFile.disableEmpty();
                        value = $.MultiFile.intercepted[a].apply(this, arguments);
                        $.MultiFile.reEnableEmpty();
                        return value
                    }
                })(e)
            }
        }
    });
    $.extend($.fn, {
        reset: function () {
            return this.each(function () {
                try {
                    this.reset()
                } catch (e) {}
            })
        },
        MultiFile: function (h) {
            if ($.MultiFile.autoIntercept) {
                $.MultiFile.intercept($.MultiFile.autoIntercept);
                $.MultiFile.autoIntercept = null
            };
            return $(this).each(function (e) {
                if (this._MultiFile) return;
                this._MultiFile = true;
                window.MultiFile = (window.MultiFile || 0) + 1;
                e = window.MultiFile;
                var g = {
                    e: this,
                    E: $(this),
                    clone: $(this).clone()
                };
                if (typeof h == 'number') h = {
                    max: h
                };
                if (typeof h == 'string') h = {
                    accept: h
                };
                var o = $.extend({}, $.MultiFile.options, h || {}, ($.meta ? g.E.data() : ($.metadata ? g.E.metadata() : null)) || {});
                if (!(o.max > 0)) {
                    o.max = g.E.attr('maxlength');
                    if (!(o.max > 0)) {
                        o.max = (String(g.e.className.match(/\b(max|limit)\-([0-9]+)\b/gi) || ['']).match(/[0-9]+/gi) || [''])[0];
                        if (!(o.max > 0)) o.max = -1;
                        else o.max = String(o.max).match(/[0-9]+/gi)[0]
                    }
                };
                o.max = new Number(o.max);
                o.accept = o.accept || g.E.attr('accept') || '';
                if (!o.accept) {
                    o.accept = (g.e.className.match(/\b(accept\-[\w\|]+)\b/gi)) || '';
                    o.accept = new String(o.accept).replace(/^(accept|ext)\-/i, '')
                };
                $.extend(g, o || {});
                g.STRING = $.extend({}, $.MultiFile.options.STRING, g.STRING);
                $.extend(g, {
                    n: 0,
                    slaves: [],
                    files: [],
                    instanceKey: g.e.id || 'MultiFile' + String(e),
                    generateID: function (z) {
                        return g.instanceKey + (z > 0 ? '_F' + String(z) : '')
                    },
                    trigger: function (a, b) {
                        var c = g[a],
                            value = $(b).attr('value');
                        if (c) {
                            var d = c(b, value, g);
                            if (d != null) return d
                        }
                        return true
                    }
                });
                if (String(g.accept).length > 1) {
                    g.rxAccept = new RegExp('\\.(' + (g.accept ? g.accept : '') + ')$', 'gi')
                };
                g.wrapID = g.instanceKey + '_wrap';
                g.E.wrap('<div id="' + g.wrapID + '"></div>');
                g.wrapper = $('#' + g.wrapID + '');
                g.e.name = g.e.name || 'file' + e + '[]';
                g.wrapper.append('<span id="' + g.wrapID + '_labels"></span>');
                g.labels = $('#' + g.wrapID + '_labels');
                g.addSlave = function (c, d) {
                    g.n++;
                    c.MF = g;
                    c.i = d;
                    if (c.i > 0) c.id = c.name = null;
                    c.id = c.id || g.generateID(c.i);
                    c.name = String(g.namePattern.replace(/\$name/gi, g.E.attr('name')).replace(/\$id/gi, g.E.attr('id')).replace(/\$g/gi, (e > 0 ? e : '')).replace(/\$i/gi, (d > 0 ? d : '')));
                    $(c).val('').attr('value', '')[0].value = '';
                    if ((g.max > 0) && ((g.n - 1) > (g.max))) c.disabled = true;
                    g.current = g.slaves[c.i] = c;
                    c = $(c);
                    $(c).change(function () {
                        $(this).blur();
                        if (!g.trigger('onFileSelect', this, g)) return false;
                        var a = '',
                            v = String(this.value || '');
                        if (g.accept && v && !v.match(g.rxAccept)) a = g.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));
                        for (var f in g.slaves) if (g.slaves[f] && g.slaves[f] != this) if (g.slaves[f].value == v) a = g.STRING.duplicate.replace('$file', v.match(/[^\/\\]+$/gi));
                        var b = $(g.clone).clone();
                        b.addClass('MultiFile');
                        if (a != '') {
                            g.error(a);
                            g.n--;
                            g.addSlave(b[0], this.i);
                            c.parent().prepend(b);
                            c.remove();
                            return false
                        };
                        $(this).css({
                            position: 'absolute',
                            top: '-3000px'
                        });
                        g.labels.before(b);
                        g.addToList(this);
                        g.addSlave(b[0], this.i + 1);
                        if (!g.trigger('afterFileSelect', this, g)) return false
                    })
                };
                g.addToList = function (c) {
                    if (!g.trigger('onFileAppend', c, g)) return false;
                    var r = $('<div></div>'),
                        v = String(c.value || ''),
                        a = $('<span class="file" title="' + g.STRING.selected.replace('$file', v) + '">' + v.match(/[^\/\\]+$/gi)[0] + '</span>'),
                        b = $('<a href="#' + g.wrapID + '">' + g.STRING.remove + '</a>');
                    g.labels.append(r.append('[', b, ']&nbsp;', a));
                    b.click(function () {
                        if (!g.trigger('onFileRemove', c, g)) return false;
                        g.n--;
                        g.current.disabled = false;
                        g.slaves[c.i] = null;
                        $(c).remove();
                        $(this).parent().remove();
                        $(g.current).css({
                            position: '',
                            top: ''
                        });
                        $(g.current).reset().val('').attr('value', '')[0].value = '';
                        if (!g.trigger('afterFileRemove', c, g)) return false;
                        return false
                    });
                    if (!g.trigger('afterFileAppend', c, g)) return false
                };
                if (!g.MF) g.addSlave(g.e, 0);
                g.n++
            })
        }
    });
    $(function () {
        $.MultiFile()
    })
})(jQuery);

(function ($) {
    $.fn.ajaxSubmit = function (options) {
        if (!this.length) {
            log('ajaxSubmit: skipping submit process - no element selected');
            return this
        }
        if (typeof options == 'function') options = {
            success: options
        };
        var url = $.trim(this.attr('action'));
        if (url) {
            url = (url.match(/^([^#]+)/) || [])[1]
        }
        url = url || window.location.href || '';
        options = $.extend({
            url: url,
            type: this.attr('method') || 'GET',
            iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
        }, options || {});
        var veto = {};
        this.trigger('form-pre-serialize', [this, options, veto]);
        if (veto.veto) {
            log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
            return this
        }
        if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
            log('ajaxSubmit: submit aborted via beforeSerialize callback');
            return this
        }
        var a = this.formToArray(options.semantic);
        if (options.data) {
            options.extraData = options.data;
            for (var n in options.data) {
                if (options.data[n] instanceof Array) {
                    for (var k in options.data[n]) a.push({
                        name: n,
                        value: options.data[n][k]
                    })
                } else a.push({
                    name: n,
                    value: options.data[n]
                })
            }
        }
        if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
            log('ajaxSubmit: submit aborted via beforeSubmit callback');
            return this
        }
        this.trigger('form-submit-validate', [a, this, options, veto]);
        if (veto.veto) {
            log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
            return this
        }
        var q = $.param(a);
        if (options.type.toUpperCase() == 'GET') {
            options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
            options.data = null
        } else options.data = q;
        var $form = this,
            callbacks = [];
        if (options.resetForm) callbacks.push(function () {
            $form.resetForm()
        });
        if (options.clearForm) callbacks.push(function () {
            $form.clearForm()
        });
        if (!options.dataType && options.target) {
            var oldSuccess = options.success ||
            function () {};
            callbacks.push(function (data) {
                var fn = options.replaceTarget ? 'replaceWith' : 'html';$(options.target)[fn](data).each(oldSuccess, arguments)
            })
        } else if (options.success) callbacks.push(options.success);
        options.success = function (data, status, xhr) {
            for (var i = 0, max = callbacks.length; i < max; i++) callbacks[i].apply(options, [data, status, xhr || $form, $form])
        };
        var files = $('input:file', this).fieldValue();
        var found = false;
        for (var j = 0; j < files.length; j++) if (files[j]) found = true;
        var multipart = false;
        if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {
            if (options.closeKeepAlive) $.get(options.closeKeepAlive, fileUpload);
            else fileUpload()
        } else $.ajax(options);
        this.trigger('form-submit-notify', [this, options]);
        return this;

        function fileUpload() {
            var form = $form[0];
            if ($(':input[name=submit]', form).length) {
                alert('Error: Form elements must not be named "submit".');
                return
            }
            var opts = $.extend({}, $.ajaxSettings, options);
            var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
            var id = 'jqFormIO' + (new Date().getTime());
            var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" onload="var f = (jQuery(this).data(\'form-plugin-onload\')); if (f) f()" />');
            var io = $io[0];
            $io.css({
                position: 'absolute',
                top: '-1000px',
                left: '-1000px'
            });
            var xhr = {
                aborted: 0,
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: 'n/a',
                getAllResponseHeaders: function () {},
                getResponseHeader: function () {},
                setRequestHeader: function () {},
                abort: function () {
                    this.aborted = 1;
                    $io.attr('src', opts.iframeSrc)
                }
            };
            var g = opts.global;
            if (g && !$.active++) $.event.trigger("ajaxStart");
            if (g) $.event.trigger("ajaxSend", [xhr, opts]);
            if (s.beforeSend && s.beforeSend(xhr, s) === false) {
                s.global && $.active--;
                return
            }
            if (xhr.aborted) return;
            var cbInvoked = false;
            var timedOut = 0;
            var sub = form.clk;
            if (sub) {
                var n = sub.name;
                if (n && !sub.disabled) {
                    opts.extraData = opts.extraData || {};
                    opts.extraData[n] = sub.value;
                    if (sub.type == "image") {
                        opts.extraData[n + '.x'] = form.clk_x;
                        opts.extraData[n + '.y'] = form.clk_y
                    }
                }
            }
            function doSubmit() {
                var t = $form.attr('target'),
                    a = $form.attr('action');
                form.setAttribute('target', id);
                if (form.getAttribute('method') != 'POST') form.setAttribute('method', 'POST');
                if (form.getAttribute('action') != opts.url) form.setAttribute('action', opts.url);
                if (!opts.skipEncodingOverride) {
                    $form.attr({
                        encoding: 'multipart/form-data',
                        enctype: 'multipart/form-data'
                    })
                }
                if (opts.timeout) setTimeout(function () {
                    timedOut = true;
                    cb()
                }, opts.timeout);
                var extraInputs = [];
                try {
                    if (opts.extraData) for (var n in opts.extraData) extraInputs.push($('<input type="hidden" name="' + n + '" value="' + opts.extraData[n] + '" />').appendTo(form)[0]);
                    $io.appendTo('body');
                    $io.data('form-plugin-onload', cb);
                    form.submit()
                } finally {
                    form.setAttribute('action', a);
                    t ? form.setAttribute('target', t) : $form.removeAttr('target');$(extraInputs).remove()
                }
            };
            if (opts.forceSync) doSubmit();
            else setTimeout(doSubmit, 10);
            var domCheckCount = 100;

            function cb() {
                if (cbInvoked) return;
                var ok = true;
                try {
                    if (timedOut) throw 'timeout';
                    var data, doc;
                    doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
                    var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);log('isXml=' + isXml);
                    if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
                        if (--domCheckCount) {
                            log('requeing onLoad callback, DOM not available');
                            setTimeout(cb, 250);
                            return
                        }
                        log('Could not access iframe DOM after 100 tries.');
                        return
                    }
                    log('response detected');cbInvoked = true;xhr.responseText = doc.body ? doc.body.innerHTML : null;xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;xhr.getResponseHeader = function (header) {
                        var headers = {
                            'content-type': opts.dataType
                        };
                        return headers[header]
                    };
                    if (opts.dataType == 'json' || opts.dataType == 'script') {
                        var ta = doc.getElementsByTagName('textarea')[0];
                        if (ta) xhr.responseText = ta.value;
                        else {
                            var pre = doc.getElementsByTagName('pre')[0];
                            if (pre) xhr.responseText = pre.innerHTML
                        }
                    } else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
                        xhr.responseXML = toXml(xhr.responseText)
                    }
                    data = $.httpData(xhr, opts.dataType)
                } catch (e) {
                    log('error caught:', e);
                    ok = false;
                    xhr.error = e;
                    $.handleError(opts, xhr, 'error', e)
                }
                if (ok) {
                    opts.success(data, 'success');
                    if (g) $.event.trigger("ajaxSuccess", [xhr, opts])
                }
                if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
                if (g && !--$.active) $.event.trigger("ajaxStop");
                if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
                setTimeout(function () {
                    $io.removeData('form-plugin-onload');
                    $io.remove();
                    xhr.responseXML = null
                }, 100)
            };

            function toXml(s, doc) {
                if (window.ActiveXObject) {
                    doc = new ActiveXObject('Microsoft.XMLDOM');
                    doc.async = 'false';
                    doc.loadXML(s)
                } else doc = (new DOMParser()).parseFromString(s, 'text/xml');
                return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null
            }
        }
    };
    $.fn.ajaxForm = function (options) {
        return this.ajaxFormUnbind().bind('submit.form-plugin', function (e) {
            e.preventDefault();
            $(this).ajaxSubmit(options)
        }).bind('click.form-plugin', function (e) {
            var target = e.target;
            var $el = $(target);
            if (!($el.is(":submit,input:image"))) {
                var t = $el.closest(':submit');
                if (t.length == 0) return;
                target = t[0]
            }
            var form = this;
            form.clk = target;
            if (target.type == 'image') {
                if (e.offsetX != undefined) {
                    form.clk_x = e.offsetX;
                    form.clk_y = e.offsetY
                } else if (typeof $.fn.offset == 'function') {
                    var offset = $el.offset();
                    form.clk_x = e.pageX - offset.left;
                    form.clk_y = e.pageY - offset.top
                } else {
                    form.clk_x = e.pageX - target.offsetLeft;
                    form.clk_y = e.pageY - target.offsetTop
                }
            }
            setTimeout(function () {
                form.clk = form.clk_x = form.clk_y = null
            }, 100)
        })
    };
    $.fn.ajaxFormUnbind = function () {
        return this.unbind('submit.form-plugin click.form-plugin')
    };
    $.fn.formToArray = function (semantic) {
        var a = [];
        if (this.length == 0) return a;
        var form = this[0];
        var els = semantic ? form.getElementsByTagName('*') : form.elements;
        if (!els) return a;
        for (var i = 0, max = els.length; i < max; i++) {
            var el = els[i];
            var n = el.name;
            if (!n) continue;
            if (semantic && form.clk && el.type == "image") {
                if (!el.disabled && form.clk == el) {
                    a.push({
                        name: n,
                        value: $(el).val()
                    });
                    a.push({
                        name: n + '.x',
                        value: form.clk_x
                    }, {
                        name: n + '.y',
                        value: form.clk_y
                    })
                }
                continue
            }
            var v = $.fieldValue(el, true);
            if (v && v.constructor == Array) {
                for (var j = 0, jmax = v.length; j < jmax; j++) a.push({
                    name: n,
                    value: v[j]
                })
            } else if (v !== null && typeof v != 'undefined') a.push({
                name: n,
                value: v
            })
        }
        if (!semantic && form.clk) {
            var $input = $(form.clk),
                input = $input[0],
                n = input.name;
            if (n && !input.disabled && input.type == 'image') {
                a.push({
                    name: n,
                    value: $input.val()
                });
                a.push({
                    name: n + '.x',
                    value: form.clk_x
                }, {
                    name: n + '.y',
                    value: form.clk_y
                })
            }
        }
        return a
    };
    $.fn.formSerialize = function (semantic) {
        return $.param(this.formToArray(semantic))
    };
    $.fn.fieldSerialize = function (successful) {
        var a = [];
        this.each(function () {
            var n = this.name;
            if (!n) return;
            var v = $.fieldValue(this, successful);
            if (v && v.constructor == Array) {
                for (var i = 0, max = v.length; i < max; i++) a.push({
                    name: n,
                    value: v[i]
                })
            } else if (v !== null && typeof v != 'undefined') a.push({
                name: this.name,
                value: v
            })
        });
        return $.param(a)
    };
    $.fn.fieldValue = function (successful) {
        for (var val = [], i = 0, max = this.length; i < max; i++) {
            var el = this[i];
            var v = $.fieldValue(el, successful);
            if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) continue;
            v.constructor == Array ? $.merge(val, v) : val.push(v)
        }
        return val
    };
    $.fieldValue = function (el, successful) {
        var n = el.name,
            t = el.type,
            tag = el.tagName.toLowerCase();
        if (typeof successful == 'undefined') successful = true;
        if (successful && (!n || el.disabled || t == 'reset' || t == 'button' || (t == 'checkbox' || t == 'radio') && !el.checked || (t == 'submit' || t == 'image') && el.form && el.form.clk != el || tag == 'select' && el.selectedIndex == -1)) return null;
        if (tag == 'select') {
            var index = el.selectedIndex;
            if (index < 0) return null;
            var a = [],
                ops = el.options;
            var one = (t == 'select-one');
            var max = (one ? index + 1 : ops.length);
            for (var i = (one ? index : 0); i < max; i++) {
                var op = ops[i];
                if (op.selected) {
                    var v = op.value;
                    if (!v) v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
                    if (one) return v;a.push(v)
                }
            }
            return a
        }
        return el.value
    };
    $.fn.clearForm = function () {
        return this.each(function () {
            $('input,select,textarea', this).clearFields()
        })
    };
    $.fn.clearFields = $.fn.clearInputs = function () {
        return this.each(function () {
            var t = this.type,
                tag = this.tagName.toLowerCase();
            if (t == 'text' || t == 'password' || tag == 'textarea') this.value = '';
            else if (t == 'checkbox' || t == 'radio') this.checked = false;
            else if (tag == 'select') this.selectedIndex = -1
        })
    };
    $.fn.resetForm = function () {
        return this.each(function () {
            if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) this.reset()
        })
    };
    $.fn.enable = function (b) {
        if (b == undefined) b = true;
        return this.each(function () {
            this.disabled = !b
        })
    };
    $.fn.selected = function (select) {
        if (select == undefined) select = true;
        return this.each(function () {
            var t = this.type;
            if (t == 'checkbox' || t == 'radio') this.checked = select;
            else if (this.tagName.toLowerCase() == 'option') {
                var $sel = $(this).parent('select');
                if (select && $sel[0] && $sel[0].type == 'select-one') {
                    $sel.find('option').selected(false)
                }
                this.selected = select
            }
        })
    };

    function log() {
        if ($.fn.ajaxSubmit.debug) {
            var msg = '[jquery.form] ' + Array.prototype.join.call(arguments, '');
            if (window.console && window.console.log) window.console.log(msg);
            else if (window.opera && window.opera.postError) window.opera.postError(msg)
        }
    }
})(jQuery);

function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}

jQuery.url=function(){var segments={};var parsed={};var options={url:window.location,strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};var parseUri=function(){str=decodeURI(options.url);var m=options.parser[options.strictMode?"strict":"loose"].exec(str);var uri={};var i=14;while(i--){uri[options.key[i]]=m[i]||""}uri[options.q.name]={};uri[options.key[12]].replace(options.q.parser,function($0,$1,$2){if($1){uri[options.q.name][$1]=$2}});return uri};var key=function(key){if(!parsed.length){setUp()}if(key=="base"){if(parsed.port!==null&&parsed.port!==""){return parsed.protocol+"://"+parsed.host+":"+parsed.port+"/"}else{return parsed.protocol+"://"+parsed.host+"/"}}return(parsed[key]==="")?null:parsed[key]};var param=function(item){if(!parsed.length){setUp()}return(parsed.queryKey[item]===null)?null:parsed.queryKey[item]};var setUp=function(){parsed=parseUri();getSegments()};var getSegments=function(){var p=parsed.path;segments=[];segments=parsed.path.length==1?{}:(p.charAt(p.length-1)=="/"?p.substring(1,p.length-1):path=p.substring(1)).split("/")};return{setMode:function(mode){strictMode=mode=="strict"?true:false;return this},setUrl:function(newUri){options.url=newUri===undefined?window.location:newUri;setUp();return this},segment:function(pos){if(!parsed.length){setUp()}if(pos===undefined){return segments.length}return(segments[pos]===""||segments[pos]===undefined)?null:segments[pos]},attr:key,param:param}}();

  (function($){ 
       $.fn.extend({  
           pwdstr: function(el) {			
  			return this.each(function() {
  					
  					
  					
  					$(this).keyup(function(){
  					if($(this).val()!='') {
  						$(el).show();
  						$(el).html(getTime($(this).val()));
  					} else {
  						$(el).hide();
  					}
  					});
  					
  					function getTime(str){
  					
  					var chars = 0;
  					var rate = 2800000000;
  					
  					if((/[a-z]/).test(str)) chars +=  26;
  					if((/[A-Z]/).test(str)) chars +=  26;
  					if((/[0-9]/).test(str)) chars +=  10;
  					if((/[^a-zA-Z0-9]/).test(str)) chars +=  32;
  
  					var pos = Math.pow(chars,str.length);
  					var s = pos/rate;
  					
  					var decimalYears = s/(3600*24*365);
  					var years = Math.floor(decimalYears);
  					
  					var decimalMonths =(decimalYears-years)*12;
  					var months = Math.floor(decimalMonths);
  					
  					var decimalDays = (decimalMonths-months)*30;
  					var days = Math.floor(decimalDays);
  					
  					var decimalHours = (decimalDays-days)*24;
  					var hours = Math.floor(decimalHours);
  					
  					var decimalMinutes = (decimalHours-hours)*60;
  					var minutes = Math.floor(decimalMinutes);
  					
  					var decimalSeconds = (decimalMinutes-minutes)*60;
  					var seconds = Math.floor(decimalSeconds);
  					
  					var time = [];
  					var save = years;
  					if(years > 0) {
  						if(years == 1)
  							time.push("1 år, ");
  						else
							
  							time.push(years + " år, ");
  					}
  					if(months > 0){
  						if(months == 1)
  							time.push("1 måned, ");
  						else
  							time.push(months + " måneder, ");
  					}
  					if(days > 0){
  						if(days == 1)
  							time.push("1 dag, ");
  				 		else
  							time.push(days + " dage, ");
  					}
  					if(hours > 0){
  						if(hours == 1)
  							time.push("1 time, ");
  						else
  							time.push(hours + " timer, ");
  					}
  					if(minutes > 0){
  						if(minutes == 1)
  							time.push("1 minut, ");
  						else
  							time.push(minutes + " minutter, ");
  					}
  					if(seconds > 0){
  						if(seconds == 1)
  							time.push("1 sekund, ");
  						else
  							time.push(seconds + " sekunder, ");
  					}
  					
  					if(time.length <= 0)
  						time = "<1 sekund, ";
  					else if(time.length == 1)
  						time = time[0];
  					else
  						time = time[0] + time[1];
  						
  						if(save > 999999999999)
  							return "      &#8734; Vi gider ikke regne flere år";
  						else
  							return time.substring(0,time.length-2);
  					}
  						
  					
  					
  					
  			 });
          } 
      }); 
  })(jQuery); 
    		
 (function ($) {
    $.fn.tipTip = function (options) {
        var defaults = {
            activation: "hover",
            keepAlive: false,
            maxWidth: "200px",
            edgeOffset: 3,
            defaultPosition: "bottom",
            delay: 400,
            fadeIn: 200,
            fadeOut: 200,
            attribute: "title",
            content: false,
            enter: function () {},
            exit: function () {}
        };
        var opts = $.extend(defaults, options);
        if ($("#tip").length <= 0) {
            var tip = $('<div id="tip" style="max-width:' + opts.maxWidth + ';"></div>');
            var tiptip_content = $('<div id="tiptip_content"></div>');
            var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
            $("body").append(tip.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))
        } else {
            var tip = $("#tip");
            var tiptip_content = $("#tiptip_content");
            var tiptip_arrow = $("#tiptip_arrow")
        }
        return this.each(function () {
            var org_elem = $(this);
            if (opts.content) {
                var org_title = opts.content
            } else {
                var org_title = org_elem.attr(opts.attribute)
            }
            if (org_title != "") {
                if (!opts.content) {
                    org_elem.removeAttr(opts.attribute)
                }
                var timeout = false;
                if (opts.activation == "hover") {
                    org_elem.hover(function () {
                        active_tiptip()
                    }, function () {
                        if (!opts.keepAlive) {
                            deactive_tiptip()
                        }
                    });
                    if (opts.keepAlive) {
                        tip.hover(function () {}, function () {
                            deactive_tiptip()
                        })
                    }
                } else if (opts.activation == "focus") {
                    org_elem.focus(function () {
                        active_tiptip()
                    }).blur(function () {
                        deactive_tiptip()
                    })
                } else if (opts.activation == "click") {
                    org_elem.click(function () {
                        active_tiptip();
                        return false
                    }).hover(function () {}, function () {
                        if (!opts.keepAlive) {
                            deactive_tiptip()
                        }
                    });
                    if (opts.keepAlive) {
                        tip.hover(function () {}, function () {
                            deactive_tiptip()
                        })
                    }
                }
                function active_tiptip() {
                    opts.enter.call(this);
                    tiptip_content.html(org_title);
                    tip.hide().removeAttr("class").css("margin", "0");
                    tiptip_arrow.removeAttr("style");
                    var top = parseInt(org_elem.offset()['top']);
                    var left = parseInt(org_elem.offset()['left']);
                    var org_width = parseInt(org_elem.outerWidth());
                    var org_height = parseInt(org_elem.outerHeight());
                    var tip_w = tip.outerWidth();
                    var tip_h = tip.outerHeight();
                    var w_compare = Math.round((org_width - tip_w) / 2);
                    var h_compare = Math.round((org_height - tip_h) / 2);
                    var marg_left = Math.round(left + w_compare);
                    var marg_top = Math.round(top + org_height + opts.edgeOffset);
                    var t_class = "";
                    var arrow_top = "";
                    var arrow_left = Math.round(tip_w - 12) / 2;
                    if (opts.defaultPosition == "bottom") {
                        t_class = "_bottom"
                    } else if (opts.defaultPosition == "top") {
                        t_class = "_top"
                    } else if (opts.defaultPosition == "left") {
                        t_class = "_left"
                    } else if (opts.defaultPosition == "right") {
                        t_class = "_right"
                    }
                    var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
                    var left_compare = (tip_w + left) > parseInt($(window).width());
                    if ((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))) {
                        t_class = "_right";
                        arrow_top = Math.round(tip_h - 13) / 2;
                        arrow_left = -12;
                        marg_left = Math.round(left + org_width + opts.edgeOffset);
                        marg_top = Math.round(top + h_compare)
                    } else if ((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)) {
                        t_class = "_left";
                        arrow_top = Math.round(tip_h - 13) / 2;
                        arrow_left = Math.round(tip_w);
                        marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
                        marg_top = Math.round(top + h_compare)
                    }
                    var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
                    var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
                    if (top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)) {
                        if (t_class == "_top" || t_class == "_bottom") {
                            t_class = "_top"
                        } else {
                            t_class = t_class + "_top"
                        }
                        arrow_top = tip_h;
                        marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset))
                    } else if (bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)) {
                        if (t_class == "_top" || t_class == "_bottom") {
                            t_class = "_bottom"
                        } else {
                            t_class = t_class + "_bottom"
                        }
                        arrow_top = -12;
                        marg_top = Math.round(top + org_height + opts.edgeOffset)
                    }
                    if (t_class == "_right_top" || t_class == "_left_top") {
                        marg_top = marg_top + 5
                    } else if (t_class == "_right_bottom" || t_class == "_left_bottom") {
                        marg_top = marg_top - 5
                    }
                    if (t_class == "_left_top" || t_class == "_left_bottom") {
                        marg_left = marg_left + 5
                    }
                    tiptip_arrow.css({
                        "margin-left": arrow_left + "px",
                        "margin-top": arrow_top + "px"
                    });
                    tip.css({
                        "margin-left": marg_left + "px",
                        "margin-top": marg_top + "px"
                    }).attr("class", "tip" + t_class);
                    if (timeout) {
                        clearTimeout(timeout)
                    }
                    timeout = setTimeout(function () {
                        tip.stop(true, true).fadeIn(opts.fadeIn)
                    }, opts.delay)
                }
                function deactive_tiptip() {
                    opts.exit.call(this);
                    if (timeout) {
                        clearTimeout(timeout)
                    }
                    tip.fadeOut(opts.fadeOut)
                }
            }
        })
    }
})(jQuery);
  
  var caretPositionAmp = [];

function init() {
    if (navigator.appName == "Microsoft Internet Explorer") {
        obj = document.getElementsByTagName("TEXTAREA");
        var b, a = 0;
        for (a = 0; a < obj.length; a++) {
            b = obj[a];
            caretPositionAmp[a] = b.value.length;
            b.onmouseup = function () {
                b = document.activeElement;
                for (var c = 0; c < obj.length; c++) if (obj[c] == b) break;
                b.focus();
                var e = document.selection.createRange(),
                    h = b.createTextRange(),
                    d = h.duplicate();
                h.moveToBookmark(e.getBookmark());
                d.setEndPoint("EndToStart", h);
                caretPositionAmp[c] = d.text.length
            };
            b.onkeyup = function () {
                b = document.activeElement;
                for (var c = 0; c < obj.length; c++) if (obj[c] == b) break;
                b.focus();
                var e = document.selection.createRange(),
                    h = b.createTextRange(),
                    d = h.duplicate();
                h.moveToBookmark(e.getBookmark());
                d.setEndPoint("EndToStart", h);
                caretPositionAmp[c] = d.text.length
            }
        }
    }
}
window.onload = init;
jQuery.fn.extend({
    getSelection: function () {
        var b = this.jquery ? this[0] : this,
            a, c, e, h = 0;
        b.onmousedown = function () {
            document.selection && typeof b.selectionStart != "number" ? document.selection.empty() : window.getSelection().removeAllRanges()
        };
        if (document.selection) {
            var d = document.selection.createRange(),
                f = 0,
                g = 0,
                i = 0;
            a = document.getElementsByTagName("TEXTAREA");
            for (c = 0; c < a.length; c++) if (a[c] == b) break;
            if (b.value.match(/\n/g) != null) h = b.value.match(/\n/g).length;
            if (d.text) {
                e = d.text;
                if (typeof b.selectionStart == "number") {
                    a = b.selectionStart;
                    c = b.selectionEnd;
                    if (a == c) return {
                        start: a,
                        end: c,
                        text: d.text,
                        length: c - a
                    }
                } else {
                    a = b.createTextRange();
                    e = a.duplicate();
                    firstRe = a.text;
                    a.moveToBookmark(d.getBookmark());
                    secondRe = a.text;
                    e.setEndPoint("EndToStart", a);
                    if (firstRe == secondRe && firstRe != d.text || e.text.length > firstRe.length) return {
                        start: caretPositionAmp[c],
                        end: caretPositionAmp[c],
                        text: "",
                        length: 0
                    };
                    a = e.text.length;
                    c = e.text.length + d.text.length
                }
                if (h > 0) for (e = 0; e <= h; e++) {
                    var k = b.value.indexOf("\n", g);
                    if (k != -1 && k < a) {
                        g = k + 1;
                        f++;
                        i = f
                    } else if (k != -1 && k >= a && k <= c) if (k == a + 1) {
                        f--;
                        i--;
                        g = k + 1
                    } else {
                        g = k + 1;
                        i++
                    } else e = h
                }
                if (d.text.indexOf("\n", 0) == 1) i += 2;
                a -= f;
                c -= i;
                return {
                    start: a,
                    end: c,
                    text: d.text,
                    length: c - a
                }
            }
            b.focus();
            if (typeof b.selectionStart == "number") a = b.selectionStart;
            else {
                d = document.selection.createRange();
                a = b.createTextRange();
                e = a.duplicate();
                a.moveToBookmark(d.getBookmark());
                e.setEndPoint("EndToStart", a);
                a = e.text.length
            }
            if (h > 0) for (e = 0; e <= h; e++) {
                k = b.value.indexOf("\n", g);
                if (k != -1 && k < a) {
                    g = k + 1;
                    f++
                } else e = h
            }
            a -= f;
            if (a == 0 && typeof b.selectionStart != "number") {
                a = caretPositionAmp[c];
                c = caretPositionAmp[c]
            }
            return {
                start: a,
                end: a,
                text: d.text,
                length: 0
            }
        } else if (typeof b.selectionStart == "number") {
            a = b.selectionStart;
            c = b.selectionEnd;
            e = b.value.substring(b.selectionStart, b.selectionEnd);
            return {
                start: a,
                end: c,
                text: e,
                length: c - a
            }
        } else return {
            start: undefined,
            end: undefined,
            text: undefined,
            length: undefined
        }
    },
    replaceSelection: function (b) {
        var a = this.jquery ? this[0] : this,
            c, e;
        e = 0;
        var h, d, f = 0,
            g = 0,
            i = a.scrollTop == undefined ? 0 : a.scrollTop;
        c = document.getElementsByTagName("TEXTAREA");
        for (var k = 0; k < c.length; k++) if (c[k] == a) break;
        if (document.selection && typeof a.selectionStart != "number") {
            i = document.selection.createRange();
            if (typeof a.selectionStart != "number") {
                var j;
                d = a.createTextRange();
                h = d.duplicate();
                c = d.text;
                d.moveToBookmark(i.getBookmark());
                j = d.text;
                try {
                    h.setEndPoint("EndToStart", d)
                } catch (m) {
                    return this
                }
                if (c == j && c != i.text || h.text.length > c.length) return this
            }
            if (i.text) {
                part = i.text;
                if (a.value.match(/\n/g) != null) f = a.value.match(/\n/g).length;
                c = h.text.length;
                if (f > 0) for (j = 0; j <= f; j++) {
                    var l = a.value.indexOf("\n", e);
                    if (l != -1 && l < c) {
                        e = l + 1;
                        g++
                    } else j = f
                }
                i.text = b;
                caretPositionAmp[k] = h.text.length + b.length;
                d.move("character", caretPositionAmp[k]);
                document.selection.empty();
                a.blur()
            }
            return this
        } else if (typeof a.selectionStart == "number" && a.selectionStart != a.selectionEnd) {
            c = a.selectionStart;
            e = a.selectionEnd;
            a.value = a.value.substr(0, c) + b + a.value.substr(e);
            e = c + b.length;
            a.setSelectionRange(e, e);
            a.scrollTop = i;
            return this
        }
        return this
    },
    setSelection: function (b, a) {
        b = parseInt(b);
        a = parseInt(a);
        var c = this.jquery ? this[0] : this;
        c.focus();
        if (typeof c.selectionStart != "number") {
            re = c.createTextRange();
            if (re.text.length < a) a = re.text.length + 1
        }
        if (a < b) return this;
        if (document.selection) {
            var e = 0,
                h = 0,
                d = 0,
                f = 0;
            if (typeof c.selectionStart != "number") {
                re.collapse(true);
                re.moveEnd("character", a);
                re.moveStart("character", b);
                re.select()
            } else {
                if (typeof c.selectionStart == "number") {
                    if (c.value.match(/\n/g) != null) e = c.value.match(/\n/g).length;
                    if (e > 0) for (var g = 0; g <= e; g++) {
                        var i = c.value.indexOf("\n", d);
                        if (i != -1 && i < b) {
                            d = i + 1;
                            h++;
                            f = h
                        } else if (i != -1 && i >= b && i <= a) if (i == b + 1) {
                            h--;
                            f--;
                            d = i + 1
                        } else {
                            d = i + 1;
                            f++
                        } else g = e
                    }
                    b += h;
                    a += f;
                    c.selectionStart = b;
                    c.selectionEnd = a
                }
                c.focus()
            }
            return this
        } else if (c.selectionStart) {
            c.focus();
            c.selectionStart = b;
            c.selectionEnd = a;
            c.focus();
            return this
        }
    },
    insertAtCaretPos: function (b) {
        var a = this.jquery ? this[0] : this,
            c, e, h, d, f, g, i;
        c = e = 0;
        var k = a.scrollTop == undefined ? 0 : a.scrollTop;
        i = document.getElementsByTagName("TEXTAREA");
        for (var j = 0; j < i.length; j++) if (i[j] == a) break;
        a.focus();
        if (document.selection && typeof a.selectionStart != "number") {
            if (a.value.match(/\n/g) != null) c = a.value.match(/\n/g).length;
            i = parseInt(caretPositionAmp[j]);
            if (c > 0) for (var m = 0; m <= c; m++) {
                var l = a.value.indexOf("\n", h);
                if (l != -1 && l <= i) {
                    h = l + 1;
                    i -= 1;
                    e++
                }
            }
        }
        caretPositionAmp[j] = parseInt(caretPositionAmp[j]);
        a.onkeyup = function () {
            if (document.selection && typeof a.selectionStart != "number") {
                a.focus();
                d = document.selection.createRange();
                f = a.createTextRange();
                g = f.duplicate();
                f.moveToBookmark(d.getBookmark());
                g.setEndPoint("EndToStart", f);
                caretPositionAmp[j] = g.text.length
            }
        };
        a.onmouseup = function () {
            if (document.selection && typeof a.selectionStart != "number") {
                a.focus();
                d = document.selection.createRange();
                f = a.createTextRange();
                g = f.duplicate();
                f.moveToBookmark(d.getBookmark());
                g.setEndPoint("EndToStart", f);
                caretPositionAmp[j] = g.text.length
            }
        };
        if (document.selection && typeof a.selectionStart != "number") {
            d = document.selection.createRange();
            if (d.text.length != 0) return this;
            f = a.createTextRange();
            textLength = f.text.length;
            g = f.duplicate();
            f.moveToBookmark(d.getBookmark());
            g.setEndPoint("EndToStart", f);
            c = g.text.length;
            if (caretPositionAmp[j] > 0 && c == 0) {
                e = caretPositionAmp[j] - e;
                f.move("character", e);
                f.select();
                d = document.selection.createRange();
                caretPositionAmp[j] += b.length
            } else if (!(caretPositionAmp[j] >= 0) && textLength == 0) {
                d = document.selection.createRange();
                caretPositionAmp[j] = b.length + textLength
            } else if (!(caretPositionAmp[j] >= 0) && c == 0) {
                f.move("character", textLength);
                f.select();
                d = document.selection.createRange();
                caretPositionAmp[j] = b.length + textLength
            } else if (!(caretPositionAmp[j] >= 0) && c > 0) {
                f.move("character", 0);
                document.selection.empty();
                f.select();
                d = document.selection.createRange();
                caretPositionAmp[j] = c + b.length
            } else if (caretPositionAmp[j] >= 0 && caretPositionAmp[j] == textLength) {
                if (textLength != 0) {
                    f.move("character", textLength);
                    f.select()
                } else f.move("character", 0);
                d = document.selection.createRange();
                caretPositionAmp[j] = b.length + textLength
            } else {
                if (caretPositionAmp[j] >= 0 && c != 0 && caretPositionAmp[j] >= c) {
                    e = caretPositionAmp[j] - c;
                    f.move("character", e)
                } else caretPositionAmp[j] >= 0 && c != 0 && caretPositionAmp[j] < c && f.move("character", 0);
                document.selection.empty();
                f.select();
                d = document.selection.createRange();
                caretPositionAmp[j] += b.length
            }
            d.text = b;
            a.focus();
            return this
        } else if (typeof a.selectionStart == "number" && a.selectionStart == a.selectionEnd) {
            h = a.selectionStart + b.length;
            c = a.selectionStart;
            e = a.selectionEnd;
            a.value = a.value.substr(0, c) + b + a.value.substr(e);
            a.setSelectionRange(h, h);
            a.scrollTop = k;
            return this
        }
        return this
    },
    setCaretPos: function (b) {
        var a = this.jquery ? this[0] : this,
            c, e = 0,
            h = 0,
            d;
        d = document.getElementsByTagName("TEXTAREA");
        for (var f = 0; f < d.length; f++) if (d[f] == a) break;
        a.focus();
        if (parseInt(b) == 0) return this;
        if (parseInt(b) > 0) {
            b = parseInt(b) - 1;
            if (document.selection && typeof a.selectionStart == "number" && a.selectionStart == a.selectionEnd) {
                if (a.value.match(/\n/g) != null) e = a.value.match(/\n/g).length;
                if (e > 0) for (var g = 0; g <= e; g++) {
                    d = a.value.indexOf("\n", c);
                    if (d != -1 && d <= b) {
                        c = d + 1;
                        b = parseInt(b) + 1
                    }
                }
            }
        } else if (parseInt(b) < 0) {
            b = parseInt(b) + 1;
            if (document.selection && typeof a.selectionStart != "number") {
                b = a.value.length + parseInt(b);
                if (a.value.match(/\n/g) != null) e = a.value.match(/\n/g).length;
                if (e > 0) {
                    for (g = 0; g <= e; g++) {
                        d = a.value.indexOf("\n", c);
                        if (d != -1 && d <= b) {
                            c = d + 1;
                            b = parseInt(b) - 1;
                            h += 1
                        }
                    }
                    b = b + h - e
                }
            } else if (document.selection && typeof a.selectionStart == "number") {
                b = a.value.length + parseInt(b);
                if (a.value.match(/\n/g) != null) e = a.value.match(/\n/g).length;
                if (e > 0) {
                    b = parseInt(b) - e;
                    for (g = 0; g <= e; g++) {
                        d = a.value.indexOf("\n", c);
                        if (d != -1 && d <= b) {
                            c = d + 1;
                            b = parseInt(b) + 1;
                            h += 1
                        }
                    }
                }
            } else b = a.value.length + parseInt(b)
        } else return this;
        if (document.selection && typeof a.selectionStart != "number") {
            c = document.selection.createRange();
            if (c.text != 0) return this;
            a = a.createTextRange();
            a.collapse(true);
            a.moveEnd("character", b);
            a.moveStart("character", b);
            a.select();
            caretPositionAmp[f] = b;
            return this
        } else if (typeof a.selectionStart == "number" && a.selectionStart == a.selectionEnd) {
            a.setSelectionRange(b, b);
            return this
        }
        return this
    },
    countCharacters: function () {
        var b = this.jquery ? this[0] : this;
        if (b.value.match(/\r/g) != null) return b.value.length - b.value.match(/\r/g).length;
        return b.value.length
    },
    setMaxLength: function (b, a) {
        this.each(function () {
            var c = this.jquery ? this[0] : this,
                e = c.type,
                h, d;
            if (parseInt(b) < 0) b = 1E8;
            if (e == "text") c.maxLength = b;
            if (e == "textarea" || e == "text") {
                c.onkeypress = function (f) {
                    var g = c.value.match(/\r/g);
                    d = b;
                    if (g != null) d = parseInt(d) + g.length;
                    f = f || event;
                    g = f.keyCode;
                    h = document.selection ? document.selection.createRange().text.length > 0 : c.selectionStart != c.selectionEnd;
                    if (c.value.length >= d && (g > 47 || g == 32 || g == 0 || g == 13) && !f.ctrlKey && !f.altKey && !h) {
                        c.value = c.value.substring(0, d);
                        typeof a == "function" && a();
                        return false
                    }
                };
                c.onkeyup = function () {
                    var f = c.value.match(/\r/g),
                        g = 0,
                        i = 0;
                    d = b;
                    if (f != null) {
                        for (var k = 0; k <= f.length; k++) if (c.value.indexOf("\n", i) <= parseInt(b)) {
                            g++;
                            i = c.value.indexOf("\n", i) + 1
                        }
                        d = parseInt(b) + g
                    }
                    if (c.value.length > d) {
                        c.value = c.value.substring(0, d);
                        typeof a == "function" && a();
                        return this
                    }
                }
            } else return this
        });
        return this
    }
});
  
  function video() {
  	if ($("video").length > 0){
  		if (navigator.userAgent.indexOf("Safari") > -1 || navigator.userAgent.indexOf("Chrome") > -1) {
  			   var videoScript = document.createElement( 'script' );
  			   videoScript.type = 'text/javascript';
  			   videoScript.src = 'http://c4d.dk/js/video.js';
  	
  			   $("head").append( videoScript );
  			    
  			    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
  			    	//later	
  			    } else {
  			    	$("video").each(function() {
  			    		var source = $(this).attr("src");
  			    		var numRand = Math.floor(Math.random()*101);
  			    		$(this).replaceWith('<div class="video" id="video'+numRand+'"></div>');
  			    		var elementName = '#video'+numRand;

  			    	 	fv = $(elementName).film({
        					autobuffer: false,
        					preload: false,
      					});
      					fv.load([
        					{
          					src:  source,
         					type: 'video/mp4'
        					}
      					]);
  			    	});
  			    }
  			}
  		}
  }
  
  function footNote() {
  	if($('.footnote').length) {
  		if($('#footnotes').length) {
  			$('#footnotes').remove();
  		}
  		var footcount = 0;
  		var content = '';
  		$('.column2').append('<div id="footnotes"><div id="footnote_border"></div></div>');
  		$(".footnote").each(function() {
  			footcount = footcount + 1;
  			content = $(this).html();
  			tooltipContent = $(this).text();
  			$(this).html('<sup><a title="Fodnote '+footcount + ' &#x21a9; ' +tooltipContent+'" class="sup_a" id="af'+footcount+'" href="#bf'+footcount+'">'+footcount+'</a></sup>');
  			$('#footnotes').append('<div id="bf'+footcount+'" class="footnote_a"><span class="footnumber">'+footcount+'. </span>' + '<span class="footcontent">' + content + ' <a class="reference" href="#af'+footcount+'">&#x21a9;</></span></div>' );
  			$(".sup_a").tipTip({maxWidth: "350px", edgeOffset: 10, delay: 0, fadeIn: 100, fadeOut: 100});
  		});
  		
  		$(".sup_a").each(function() {
  			$('.sup_a').live('click', function() {
  				$('.footnote_a').removeClass('color');
  				var color = $(this).attr('href');
  				$(color).addClass('color');
  			});
  		});
  	}
 }
 
function getSelectedText() {
	var selectedText = '';
    if (window.getSelection) {
		selectedText = window.getSelection() + "";
    } else if (document.getSelection) {
		selectedText = document.getSelection() + "";
	} else if (document.selection) {
		selectedText = document.selection.createRange().text + "";
	}
	return selectedText;
}

function extractYouTubeID(url) { 
	var id; 
	id = url.replace(/^[^v]+v.(.{11}).*/,"$1"); 
	return id; 
}

function showResponse(responseText, statusText, xhr, $form)  { 
	$("#front_image").attr("src", responseText);
	$('#upload_image').slideUp('slow');
}


  
$(document).ready(function(){
footNote();video();$(".tooltip").tipTip({maxWidth: "auto", edgeOffset: 10, delay: 0, fadeIn: 100, fadeOut: 100});$('#create_user').live('click',function(){var mail=$('#c_mail').val();var username=$('#c_username').val();var password=$('#c_password').val();$.post("http://c4d.dk/profile/create",{email_address:mail,username:username,password:password},function(data){if(data=='OK'){$('#creating').slideUp('200');$('#succes_val').html('<strong>Tillykke.</strong> Din nye bruger er klar. Du kan allerede nu logge ind!');$('#succes_val').delay(200).show();$('#succes_val').addClass('succes_margin');}else{$('#succes_val').html('<strong>Fejl.</strong> Du har ikke udfyldt alle felter tilstrækkeligt.');$('#succes_val').show();}});});$('#log_in').click(function(e){if($("#login_p").is(":hidden")){$('#login_p').show();$("#log_in").css("color","white");$("#header").css("height","auto");}else{$('#login_p').hide();$("#log_in").removeAttr("style");$("#header").removeAttr("style");}
if($("#login_p").length==0){$('#header').append('<div id="login_p"><div id="login_d"><div class="buttons"><div class="login_container"><div class="login_button"><span>Log ind</span></div><form action="http://c4d.dk/profile/validate" method="post"><input placeholder="Kontonavn" name="username" id="l_username" type="text" required="required" /><input placeholder="Adgangskode" required="required" name="password" id="l_password" type="password"/> <input type="submit" class="mf" value="Log ind"/></form></div><div class="login_container create_container"><div class="create_button"><span>Ny konto</span></div><div id="creating"><input placeholder="Ønsket kontonavn" id="c_username" type="text"/><span id="c_user_val"></span><input placeholder="Adgangskode" id="c_password" type="password"/><span id="c_pass_val"></span><input placeholder="Mail" id="c_mail" type="text"/> <div id="c_mail_val"></div><button id="create_user">Opret bruger</button></div><div id="succes_val"></div></div></div></div></div>');$('#c_password').pwdstr('#c_pass_val');$('#login_p').show();$("#log_in").css("color","white");$("#header").css("height","auto");}});$('#c_mail').live('keyup',function(e){var email=$('#c_mail').val();if(isValidEmailAddress(email)){$('#c_mail_val').html('T');$('#c_mail_val').show();}else{$('#c_mail_val').html('');$('#c_mail_val').hide();}
if(email==''){$('#c_mail_val').hide();}});$('#c_username').live('keyup',function(e){var user=$('#c_username').val();if(user.length<3){$('#c_user_val').show();$('#c_user_val').html('Minimum tre tegn!');}else{$.post("http://c4d.dk/member/check_user",{user:user},function(data){if(data=='OK'){$('#c_user_val').html('Kontonavnet er ledigt');$('#c_user_val').show();}else{$('#c_user_val').show();$('#c_user_val').html('Kontonavnet er allerede taget');}});}
if(user==''){$('#c_user_val').hide();}});$(".noise").each(function(){$(this).prepend('<div class="canvas noising"></div>');});$("input:checkbox").each(function(){if($(this).attr('id')){var id=' id="'+$(this).attr('id')+'" ';}else{var id='';}
if($(this).attr('class')){var cn=' class="'+$(this).attr('class')+'" ';;}else{var cn='';}
if($(this).attr('name')){var ne=' name="'+$(this).attr('name')+'" ';}else{var ne='';}
if($(this).attr('title')){var ti='<label>'+$(this).attr('title')+'</label>';}else{var ti='';}
var ib='<input type="checkbox"'+id+cn+ne+'" />'
var iC=$('<div class="t"><label>'+ib+'<span class="on">til</span><span class="s"></span><span class="off">fra</span></label></div>'+ti);$(this).replaceWith(iC);});$(".t input").change(function(){$(this).parents("label").toggleClass("checked");});$(".tools").each(function() {var randomTool = 'quent'+Math.floor(Math.random()*501)+'doap';var sID = '';if($(this).attr('title')) {var sID = ' id="'+$(this).attr('title')+'"';$(this).removeAttr('title');}$(this).html('<textarea class="'+randomTool+'"'+sID+'></textarea><input type="submit" value="Send" /><span title="<b>Fed</b>" class="typo icon bold tooltip">B</span><span title="<i>Kursiv</i>" class="typo icon italic tooltip">I</span><span title="<u>Understregning</u>" class="typo icon underline tooltip">U</span><span title="<s>Gennemstregning</s>" class="typo icon strike tooltip">S</span><span title="<blockquote>Citat</blockquote>" class="typo icon quote tooltip"></span><span title="Link" class="icon link tooltip"></span><span title="Billede" class="icon image tooltip"></span><span title="Video" class="icon movie tooltip"></span><span class="canvas smiley smilies"></span>');$(this).attr('id', randomTool);});$('.smilies').live('click',function(){$(this).removeAttr('class');$(this).css('position','relative');$(this).css('top','6px');$(this).html('<span class="canvas smiley smile"></span><span class="canvas smiley wink"></span><span class="canvas smiley laugh"></span><span class="canvas smiley frown"></span><span class="canvas smiley grin"></span><span class="canvas smiley yuck"></span><span class="canvas smiley sarcastic"></span><span class="canvas smiley nerd"></span><span class="canvas smiley kiss"></span><span class="canvas smiley slant"></span><span class="canvas smiley gasp"></span><span class="canvas smiley ups"></span><span class="canvas smiley cry"></span><span class="canvas smiley crazy"></span><span class="canvas smiley angry"></span><span class="canvas smiley confused"></span><span class="canvas smiley ambivalent"></span><span class="canvas smiley innocent"></span><span class="canvas smiley cool"></span><span class="canvas smiley heart"></span>');});$('.smiley').live('click',function(){var type=$(this).attr('class');if(type!=''){var sts=type.split(' ');var smiley=sts[2];var parentEls='.'+$(this).parents('.tools').attr('id');var info=$(parentEls).getSelection();if(info.text==''){$(parentEls).insertAtCaretPos('['+smiley+']');}else{$(parentEls).replaceSelection('['+smiley+']');}}});$('.typo').live('click',function(){var type=$(this).attr('class');var sts=type.split(' ');var content=sts[2];if(content=='bold'){var deli='b';}if(content=='italic'){var deli='i';}if(content=='underline'){var deli='u';}if(content=='strike'){var deli='s';}if(content=='quote'){var deli='quote';}var parentEls='.'+$(this).parents('.tools').attr('id');var info=$(parentEls).getSelection();if(info.text==''){$(parentEls).insertAtCaretPos('['+deli+']tekst[/'+deli+']')}else{$(parentEls).replaceSelection('['+deli+']'+info.text+'[/'+deli+']');}});$('.link').live('click',function(){var parentEls='.'+$(this).parents('.tools').attr('id');var info=$(parentEls).getSelection();if(info.text!=''){var RegExp=/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;if(RegExp.test(info.text)){var name=prompt("Giv nu linket en kort,men præcis beskrivelse","");if(name!=''){$(parentEls).replaceSelection('[url='+info.text+']'+name+'[/url]');}}else{var link=prompt("Indsæt linket her","http://");if(link!=''&&link!='http://'){$(parentEls).replaceSelection('[url='+link+']'+info.text+'[/url]');}}}else{var link=prompt("Indsæt linket her","http://");var name=prompt("Giv nu linket en kort,men præcis beskrivelse","");if(link!=''&&name!=''&&link!='http://'&&link!=null&&name!=null){$(parentEls).insertAtCaretPos('[url='+link+']'+name+'[/url]')}}});var base = 'http://c4d.dk/debat/e/';var slug = jQuery.url.segment(2);var load = base + slug + '/l';var save = base + slug + '/s';var headurl =  base + slug + '/h';var loaddesc =  base + slug + '/ld';var savedesc =  base + slug + '/sd';var trigged = '1';$('#column2-editable').dblclick(function(event){if(trigged=='1'){var height = $('.column2').height()+250;$.post(load,{slug:slug}, function (data) {$('.column2').addClass('nocolumn');$('.column2').html('<div class="edit"><textarea id="edit">'+data+'</textarea></div>');$('.edit textarea').height(height);});trigged = '2';}});$('#front_image').dblclick(function(event){if($("#upload_image").is(":hidden")){$('#upload_image').slideDown('slow');}else{$('#upload_image').slideUp('slow');}});$('.column1').click(function(event){if(trigged=='2'){$('.column2').hide();var newContent=$('#edit').val();$.post(save,{text: newContent},function(data){$('.column2').html(data);footNote();video();$('.column2').removeClass('nocolumn');$('.column2').show();});trigged='1';}});$('#eh').dblclick(function(e){$(this).attr('contentEditable',true);$('.column2').css('opacity','0.4');$('.front').css('opacity','0.4');$('.headings').css('opacity','0.4');$('.description').css('opacity','0.4');});var heading=$('h1').text();$('#eh').keypress(function(e){if(e.which==13){$(this).removeAttr('contentEditable');$('.column2').css('opacity','1');$('.front').css('opacity','1');$('.headings').css('opacity','1');$('.description').css('opacity','1');$(this).html($(this).text());document.title=$(this).text()+'-C4D';$.post(headurl,{title: $(this).text()});}});$('#ed').dblclick(function(e){$.post(loaddesc,{slug: slug},function(data){$('#ed').html(data);$('#ed').attr('contentEditable',true);$('.column2').css('opacity','0.4');$('.front').css('opacity','0.4');$('.headings').css('opacity','0.4');$('h1').css('opacity','0.4');});});$('#ed').keypress(function(e){if(e.which==13){var desc=$(this).text();$(this).removeAttr('contentEditable');$('.column2').css('opacity','1');$('.front').css('opacity','1');$('.headings').css('opacity','1');$('h1').css('opacity','1');$.post(savedesc,{desc: desc},function(data){$('#ed').html(data);});}});if($("#video_site").length>0){$("body").addClass('dark');}if($("#gallery").length>0){$("body").addClass('dark');$('img').click(function(){if($('img.big').length==0){$('#gallery').prepend('<img class="big" src="'+$(this).attr('src')+'" />');}else{var src=$(this).attr('src');$('img.big').attr('src',src);}});}
if ($("#upload_image").length > 0){
var options = { 
success: showResponse,
resetForm: true
};  
$('#upload_image').ajaxForm(options);}
var baseComment = 'http://c4d.dk/debat/c/';var commentTrigged = '1';$('.c_editable').dblclick(function(event) {if(commentTrigged=='1') {quotedText = '';quoteT = 0;var thisElement = $(this);$('#quote_part').remove();var oldContent = $(this).html();var author = $(this).attr("title");var ei = author.split(',');var id = ei[1];var section = ei[2];var url = baseComment + id + '/l' + '/'+section;var randomID = 'do'+Math.floor(Math.random()*101)+'de';var textareaID = '#' + randomID;var saveID = '#save' + randomID;var cancelID = '#cancel' + randomID;var height = $(this).height()+100;$.post(url,{id:id},function(data){$(thisElement).html('<textarea id="'+randomID+'" style="height:'+height+'px;">'+data+'</textarea>');$(thisElement).prepend('<span id="save'+randomID+'" class="saveTools save">Gem</span><span id="cancel'+randomID+'" class="saveTools cancel">Annuller</span>');});commentTrigged = '2';}$(saveID).live('click',function(){if(commentTrigged=='2'){var content = $(textareaID).val();var saveURL = baseComment + id + '/s' + '/' + section;$.post(saveURL, {text: content},function(data){$(saveID).remove();$(cancelID).remove();$(textareaID).remove();$(thisElement).html('<p>'+data+'</p>');});commentTrigged = '1';}});$(cancelID).live('click',function(){$(saveID).remove();$(cancelID).remove();$(textareaID).remove();$(thisElement).html(oldContent);commentTrigged = '1';});});var quoteT=0;$('.text').mouseup(function(e){if(trigged=='1'){if(getSelectedText()!=''&&quoteT==0&&quotedText!=''&&commentTrigged!='2'){var quotedText=getSelectedText();var textarea=$('#comment_textarea');var author=$(this).attr("title");var ei=author.split(',');var who='@[b]'+ei[0]+'[/b] skrev:';if($(this).attr("id")=='column2-editable'||$(this).attr("class")=='column2 text'){who='Citat fra [b]'+$('h1').html()+':[/b]';}
var xPos=e.pageX-25;var yPos=e.pageY+20;$('body').append('<div id="quote_part" style="left: '+xPos+'px; top: '+yPos+'px;">Citer</div>');quoteT=1;$('#quote_part').live('click',function(){if(quotedText!=''){if($(textarea).val().length>0){textarea.val(textarea.val()+'\n'+'\n'+'[quote]'+who+'\n'+quotedText+'[/quote] \n');}else{textarea.val(textarea.val()+'[quote]'+who+'\n'+quotedText+'[/quote] \n');}
textarea.focus();textarea.setCaretPos(-1);}
quotedText='';quoteT=0;$('#quote_part').remove();});}}});$('a[href="http://c4d.dk/login"]').click(function(){$('html, body').animate({scrollTop:$('#header').offset().top},1400);$('#log_in').click();return false;});$(".youtube").each(function(){var id=extractYouTubeID($(this).attr('title'));$(this).html('<object width="400" height="250"><param name="movie" value="http://www.youtube.com/v/'+id+'&hl=da_DK&fs=1?rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+id+'&hl=da_DK&fs=1?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="250"></embed></object>');});if((navigator.userAgent.match(/iPad/i))){ }}); 