var mailLinkInserted = false;
var isFading = false;

jQuery.encodeJSON = function (mixed_val) {
    // Returns the JSON representation of a value  
    // 
    // version: 1009.2513
    // discuss at: http://phpjs.org/functions/json_encode
    // +      original by: Public Domain (http://www.json.org/json2.js)
    // +	  reimplemented by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      improved by: Michael White
    // +      input by: felix
    // +      bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *        example 1: json_encode(['e', {pluribus: 'unum'}]);
    // *        returns 1: '[\n    "e",\n    {\n    "pluribus": "unum"\n}\n]'
    var retVal, json = null;
    try { 
        var value = mixed_val;
 
        var quote = function (string) {
            var escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
            var meta = {    // table of character substitutions
                '\b': '\\b',
                '\t': '\\t',
                '\n': '\\n',
                '\f': '\\f',
                '\r': '\\r',
                '"' : '\\"',
                '\\': '\\\\'
            };
 
            escapable.lastIndex = 0;
            return escapable.test(string) ?
                            '"' + string.replace(escapable, function (a) {
                                var c = meta[a];
                                return typeof c === 'string' ? c :
                                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                            }) + '"' :
                            '"' + string + '"';
        };
 
        var str = function (key, holder) {
            var gap = '';
            var indent = '    ';
            var i = 0;          // The loop counter.
            var k = '';          // The member key.
            var v = '';          // The member value.
            var length = 0;
            var mind = gap;
            var partial = [];
            var value = holder[key];
 
            // If the value has a toJSON method, call it to obtain a replacement value.
            if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
                value = value.toJSON(key);
            }
 
            // What happens next depends on the value's type.
            switch (typeof value) {
                case 'string':
                    return quote(value);
 
                case 'number':
                    // JSON numbers must be finite. Encode non-finite numbers as null.
                    return isFinite(value) ? String(value) : 'null';
 
                case 'boolean':
                case 'null':
                    // If the value is a boolean or null, convert it to a string. Note:
                    // typeof null does not produce 'null'. The case is included here in
                    // the remote chance that this gets fixed someday.
 
                    return String(value);
 
                case 'object':
                    // If the type is 'object', we might be dealing with an object or an array or
                    // null.
                    // Due to a specification blunder in ECMAScript, typeof null is 'object',
                    // so watch out for that case.
                    if (!value) {
                        return 'null';
                    }
                    if ((this.PHPJS_Resource && value instanceof this.PHPJS_Resource) ||
                        (window.PHPJS_Resource && value instanceof window.PHPJS_Resource)) {
                        throw new SyntaxError('json_encode');
                    }
 
                    // Make an array to hold the partial results of stringifying this object value.
                    gap += indent;
                    partial = [];
 
                    // Is the value an array?
                    if (Object.prototype.toString.apply(value) === '[object Array]') {
                        // The value is an array. Stringify every element. Use null as a placeholder
                        // for non-JSON values.
 
                        length = value.length;
                        for (i = 0; i < length; i += 1) {
                            partial[i] = str(i, value) || 'null';
                        }
 
                        // Join all of the elements together, separated with commas, and wrap them in
                        // brackets.
                        v = partial.length === 0 ? '[]' :
                                gap ? '[\n' + gap +
                                partial.join(',\n' + gap) + '\n' +
                                mind + ']' :
                                '[' + partial.join(',') + ']';
                        gap = mind;
                        return v;
                    }
 
                    // Iterate through all of the keys in the object.
                    for (k in value) {
                        if (Object.hasOwnProperty.call(value, k)) {
                            v = str(k, value);
                            if (v) {
                                partial.push(quote(k) + (gap ? ': ' : ':') + v);
                            }
                        }
                    }
 
                    // Join all of the member texts together, separated with commas,
                    // and wrap them in braces.
                    v = partial.length === 0 ? '{}' :
                            gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                            mind + '}' : '{' + partial.join(',') + '}';
                    gap = mind;
                    return v;
                case 'undefined': // Fall-through
                case 'function': // Fall-through
                default:
                    throw new SyntaxError('json_encode');
            }
        };
 
        // Make a fake root object containing our value under the key of ''.
        // Return the result of stringifying the value.
        return str('', {
            '': value
        });
    
    } catch(err) { // Todo: ensure error handling above throws a SyntaxError in all cases where it could
                            // (i.e., when the JSON global is not available and there is an error)
        if (!(err instanceof SyntaxError)) {
            throw new Error('Unexpected error type in json_encode()');
        }
        this.php_js = this.php_js || {};
        this.php_js.last_error_json = 4; // usable by json_last_error()
        return null;
    }
}

jQuery(document).ready(function() {
	Shadowbox.init();
    jQuery(window).bind('scroll', function() {
    	var top = jQuery(this).scrollTop();
        if (top >= 165) {
        	if (jQuery('#micronav').css('display') == "none" && !isFading) {
            	isFading = true;
                jQuery('#micronav').show('slide', {
                    direction: 'up'
                }, 500, function() {
                	isFading = false;
                });
            }
        } else {
        	if (jQuery('#micronav').css('display') == "block" && !isFading) {
            	isFading = true;
                jQuery('#micronav').hide('slide', {
                    direction: 'up'
                }, 500, function() {
                	isFading = false;
                });
            }
        }
    });
});

function showCrossfader(images, container, width, height, tweenDuration, waitDuration, link)
{
	var lnk = "";
	if(link != null)
	{
		lnk = "&lnk=" + link;
	}
	var url = "http://www.rro.ch/2009/cms/engine/templates/global/flash/crossfader.swf?tD=" + tweenDuration + "&wD=" + waitDuration + lnk + "&images=" + images;
	jQuery('#'+container).html("<object width='" + width + "' height='" + height + "' type='application/x-shockwave-flash' data='" + url + "'>" +
                    				"<param value='" + url + "' name='movie'/>" +
	                    			"<param value='high' name='quality'/>" +
	                    			"<param value='exactfit' name='scale'/>" +
	                    			"<param value='false' name='menu'/>" +
                				"</object>");
}

function showOverlayCrossfader(images, overlay, container, width, height, tweenDuration, waitDuration, link)
{
	var lnk = "";
	if(link != null)
	{
		lnk = "&lnk=" + link;
	}
	var url = "http://www.rro.ch/2009/cms/engine/templates/global/flash/crossfader.swf?tD=" + tweenDuration + "&wD=" + waitDuration + lnk + "&images=" + images + "&overlay=" + overlay;
	jQuery('#'+container).html("<object width='" + width + "' height='" + height + "' type='application/x-shockwave-flash' data='" + url + "'>" +
                    				"<param value='" + url + "' name='movie'/>" +
	                    			"<param value='high' name='quality'/>" +
	                    			"<param value='exactfit' name='scale'/>" +
	                    			"<param value='false' name='menu'/>" +
                				"</object>");
}

function showCrossfaderWithPlayIcon(images, container, width, height, tweenDuration, waitDuration, link)
{
	var lnk = "";
	if(link != null)
	{
		lnk = "&lnk=" + link;
	}
	var url = "http://www.rro.ch/2009/cms/engine/templates/global/flash/crossfader.swf?showPlay=true&tD=" + tweenDuration + "&wD=" + waitDuration + lnk + "&images=" + images;
	jQuery('#'+container).html("<object width='" + width + "' height='" + height + "' type='application/x-shockwave-flash' data='" + url + "'>" +
                    				"<param value='" + url + "' name='movie'/>" +
	                    			"<param value='high' name='quality'/>" +
	                    			"<param value='false' name='menu'/>" +
                				"</object>");
}

function showOverlayCrossfaderWithPlayIcon(images, overlay, container, width, height, tweenDuration, waitDuration, link)
{
	var lnk = "";
	if(link != null)
	{
		lnk = "&lnk=" + link;
	}
	var url = "http://www.rro.ch/2009/cms/engine/templates/global/flash/crossfader.swf?showPlay=true&tD=" + tweenDuration + "&wD=" + waitDuration + lnk + "&images=" + images + "&overlay=" + overlay;
	$(container).innerHTML = 	"<object width='" + width + "' height='" + height + "' type='application/x-shockwave-flash' data='" + url + "'>" +
                    				"<param value='" + url + "' name='movie'/>" +
	                    			"<param value='high' name='quality'/>" +
	                    			"<param value='false' name='menu'/>" +
                				"</object>";
}

function UnCryptMailto( s )
{
    var n = 0;
    var r = "";
    for( var i = 0; i < s.length; i++)
    {
        n = s.charCodeAt( i );
        if( n >= 8364 )
        {
            n = 128;
        }
        r += String.fromCharCode( n - 1 );
    }
    return r;
}

function linkTo_UnCryptMailto(el, s)
{
	jQuery('#'+el).href = UnCryptMailto(s);
}

function selectAll(el)
{
	el.focus();
	el.select();
}

function socialPopup(el) {
	var url = jQuery(el).attr('href');
    
    window.open(url, 'RRO Teilen', 'modal=yes,alwaysRaised=yes,width=600,height=400');
    return false;
}
