function _(id) { return document.getElementById(id); }

function get_url_query(ji){
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i=0;i<gy.length;i++) {
        ft = gy[i].split("=");
        if (ft[0] == ji) {
            return ft[1];
        }
    }
    return '';
}

$.fn.image = function(src){ 
    return this.each(function(){ 
        var i = new Image(); 
        i.src = src; 
        this.appendChild(i);
    });
}

$.fn.load_widget = function(widget, params){
    var url = "/scripts/load.py/widget?widget=1&name="+widget
    if(params){
        url += "&"+params
    }
    var obj = $(this)
    $.get(url, {}, function(data){
        $(obj).html(data)
    })
}

function redirect(secs, url){
    setTimeout("window.location='"+url+"'", secs*1000)
}

function Window(){
    var loader = new Object
    var target_id = 'loader-'+Math.floor(Math.random()*100)
    loader.container = false
    loader.target_id = target_id
    loader.position = 0
    loader.ancestor = null
    loader.naked_window = false
    loader.positioned = false
    loader.showed = 0
    loader.z_index = null
    loader.width = 'auto'
    loader.height = 'auto'
    loader.exclusive = false
    loader.frozen_size = false
    loader.callback_before_show = null
    loader.callback_after_response = null
    loader.callback_after_close = null
    loader.callback_iframe_loaded = null
    loader.cover_image = "/images/cover.png"
    table_html = "<table class='container _Window' id='#_ID_#'>"+
        "<tr><td class='top-left corner edge'></td><td class='top-middle edge'></td>"+
        "<td class='top-right corner edge clickable close-button'></td></tr>"+
        "<tr><td class='main-left edge'></td>"+
        "<td class='main-middle'><div class='main-content'></div></td>"+
        "<td class='main-right edge'></td></tr>"+
        "<tr><td class='bottom-left corner edge'></td>  <td class='bottom-middle edge'></td>  <td class='bottom-right corner edge'></td></tr>" + 
        "</table>"

    this.set_exclusive = function(bool_value){
        loader.exclusive = bool_value
    }

    this.freeze_size = function(){
        loader.frozen_size = true
        if(loader.showed>0){
            loader.freeze_size()
        }
    }

    loader.freeze_size = function(){
        while(loader.showed == 0) continue
        var objt = '#' + loader.target_id + " table.container"
        var width = $(objt).width()
        var height = $(objt).height()
        $(objt).css({"width": width, "height": height})
    }

    this.set_zindex = function(num) {
        loader.z_index = num
    }

    this.set_callback_before_show = function(callback){
        loader.callback_before_show = callback
    }

    this.set_callback_after_close = function(callback){
        loader.callback_after_close = callback
    }

    this.set_callback_iframe_loaded = function(callback){
        loader.callback_iframe_loaded = callback
    }

    this.set_callback_after_response = function(callback){
        loader.callback_after_response = callback
    }

    loader._relocate = function() {
        var pos = loader.position
        var obj = loader.ancestor
        var me = $("#"+loader.target_id+" table.container")
        if(loader.naked_window){
            me = $("#"+loader.target_id)
        }
        var scrolltop = $(window).scrollTop()
        var window_width = $(window).width()
        var window_height = $(window).height()
        var obj_width = $(me).width()
        var obj_height = $(me).height()
        var offset = null
        var trig_width = 0
        var trig_height = 0
        if(obj){
            offset = $(obj).offset()
            trig_width = $(obj).width()
            trig_height = $(obj).height()
        }
        $(me).css("position", 'absolute')
        var top = 0
        var left = 0
        
        if (pos==0){
            top = (window_height-obj_height)/2
            left = (window_width-obj_width)/2
        } else if (pos==1){
            top = offset.top-obj_height
            left = offset.left-obj_width
        } else if (pos==2){
            top = offset.top-obj_height
            left = offset.left+trig_width
        } else if (pos==3){
            top = offset.top+trig_height
            left = offset.left+trig_width
        } else if (pos==4){
            top = offset.top+trig_height
            left = offset.left-obj_width
        }
        if ( top <= 0 ) top = 20
        if (pos==0 && scrolltop>0) top = top+scrolltop
        if ( left <= 0) left = 20
        $(me).css("top", top)
        $(me).css("left", left)
    }

    this.set_width = function(width){
        loader.width = width
    }

    this.set_height = function(height){
        loader.height = height
    }

    this.create = function(){
        if (loader.exclusive){
            $("div._Window").remove()
            $("table._Window").remove()
        }
        loader.create_window(false)
    }

    this.create_naked_window = function(){
        if (loader.exclusive){
            $("div._Window").remove()
            $("table._Window").remove()
        }
        loader.create_window(true)
    }

    loader.create_window = function(naked){
        var id = '#'+loader.target_id
        var table = null;
        if(naked){
            loader.naked_window = true
            var window_html = table_html.replace("#_ID_#", loader.target_id)
            $("body").append(window_html)
            table = id
        } else {
            $("div._Window").remove()
            if (!document.getElementById(loader.target_id)){
                $("body").append("<div class='_Window' id='"+loader.target_id+"'></div>")
            }
            if($(id).html() == "") {
                var window_html = table_html.replace("#_ID_#", '')
                $(id).append(window_html)
            }
            table = id+" table.container"
        }
        loader.container = $(id+" td.main-middle div.main-content")
        $(table+" td.top-right").html("X")
        $(table+" td.top-right").css({'cursor': 'pointer', 'font-size': '12px', 'text-align': 'center'})
        $(loader.container).html("<img src='/images/progress-bar.gif' width='220px' height='19px'>")
        $(table+" td.top-right").click(loader.close)
        $(table).css({'border-collapse': 'collapse', 'border': '2px solid #c4c2c2', 'width': loader.width, 'height': loader.height})
        $(table + " td.corner").css({'width': '15px', 'height': '15px'})
        $(table+" .edge").css({'background-color': '#ededed'})
        $(table+" .top-right").css({'background-color': '#ae3333', 'color': 'white', 'text-align': 'center'})
        $(table+" .main-middle").css({'background-color': 'white', 'vertical-align': 'top'})
        $(loader.container).css({'padding': '20px', 'background-color': 'white'})
        $(id).hide()
        if(loader.z_index){
            $(id).css("z-index", loader.z_index)
            $(id+" table.container").css("z-index", loader.z_index)
        }
    }

    loader.close = function(){
        var id = '#'+loader.target_id
        $(id).remove()
        if (loader.callback_after_close){
            loader.callback_after_close()
        }
        loader = null
    }

    this.close = function(){
        loader.close()
    }

    this.show = function(){
        if (loader.callback_before_show){
            loader.callback_before_show()
        }
        var id = '#'+loader.target_id
        $(loader.container).css({'width': loader.width, 'height': loader.height, 'overflow': 'auto', 'border': '0px'})
        if(!loader.naked_window){
            loader.center_myself()
        }
        $(id).show()
    }

    this.cover_background = function(){
        if(loader.naked_window){
            return
        }
        var body_width = $(document).width()
        var body_height = $(document).height()
        var window_width = $(window).width()
        var window_height = $(window).height()
        var dark_height = body_height
        if ( window_height > body_height )
            dark_height = window_height
        var dark_width = body_width
        if(window_width > body_width)
            dark_width = window_width
        var id = '#'+loader.target_id
        $(id).css({
            'position': 'absolute',
            'top': '0px',
            'left': '0px',
            'width': dark_width,
            'height': dark_height,
            'background-image': "url("+loader.cover_image+")"
            })
    }

    this.hide_edges = function(){
        var id = '#'+loader.target_id
        $(id+" table.container").css({
                'border': '0px'
            })
        $(id+" .edge").css({
                'background-color': 'transparent'
            })
        $(id+" td.top-right img").css({
                'position': 'relative',
                'top': '20px',
                'left': '-20px'
            })
    }

    this.set_body_transparent=function(){
        var id = '#'+loader.target_id
        $(id+" table.container").css({'background-color': 'transparent'})
        $(id+" .main-content").css({'padding': '0px', 'background-color': 'transparent'})
    }

    this.set_close_button = function(img){
        var id = '#'+loader.target_id
        $(id+" td.top-right").html("<img src='"+img+"' alt='CLOSE'>")
        $(id+" td.top-right").css({'cursor': ''})
        $(id+" td.top-right img").css({'cursor': 'pointer'})
        $(id+" td.top-right").click(function(){})
        $(id+" td.top-right img").click(loader.close)
    }

    loader.center_myself = function(){
        $('#'+loader.target_id).css("display", "block")
        loader._relocate()
    }

    this.center = function(){
        loader.center_myself()
        loader.positioned = true
    }

    this.attach_to = function(obj, pos){
        loader.ancestor = obj
        loader.position = pos
        $('#'+loader.target_id).css("display", "inline")
        loader._relocate()
        loader.positioned = true
    }

    this.move_to = function(x, y){
        var id = '#'+loader.target_id
        $('#'+loader.target_id).css("display", "inline")
        $(id + " table.container").css({
            'position': 'absolute',
            'top': y,
            'left': x
            })
        loader.positioned = true
    }
 
    loader.refresh_page = function(){
        window.location = window.location.href
    }

    loader.handle_response = function(data){
        if (data.substr(0, 2) == '^0' ) {
            // remove the close button
            data = data.substr(2)
            $("#"+loader.target_id+" td.top-right").html("")
            $("#"+loader.target_id+" td.top-right").css({'background-color': '#ededed'})
            $(loader.container).html(data)
        } else if (data.substr(0, 2) == '^1' ) {
            // redirect
            data = data.substr(2)
            window.location = data
            return
        } else if (data.substr(0, 2) == '^2' ) {
            // exception message
            data = data.substr(2)
            $(loader.container).html(data)
        } else if (data.substr(0, 2) == '^3' ) {
            // open a new page in iframe inside the container
            data = data.substr(2)
            loader.open_iframe(data, '800px', '600px') 
        } else if (data.substr(0, 2) == '^4') {
            // refresh the page after this dialog is closed.
            $("#"+loader.target_id+" td.top-right").unbind()
            $("#"+loader.target_id+" td.top-right").click(loader.refresh_page)
            data = data.substr(2)
            $(loader.container).html(data)
        } else {
            $(loader.container).html(data)
        }
        if(!loader.naked_window){
            loader.center_myself()
        }
        loader.showed += 1
        if(loader.frozen_size){
            loader.freeze_size()
        }
    }
    
    loader._remake_url = function(url){
        if(url.indexOf('rand=')<0){
            if(url.indexOf('?')>0){
                url = url + "&rand=" + Math.random()
            } else {
                url = url + "?rand=" + Math.random()
            }
        }
        return url
    }

    loader.adjust_position = function(){
        loader._relocate()
    }

    this.open_url = function(url, postdata){
        url = loader._remake_url(url)
        if(postdata){
            if(loader.callback_after_response){
                $.post(url, postdata, function(data){loader.callback_after_response(data);})
            } else {
                $.post(url, postdata, function(data){loader.handle_response(data);loader.adjust_position();})
            }
        } else {
            if(loader.callback_after_response){
                $.get(url, {}, function(data){loader.callback_after_response(data);})
            } else {
                $.get(url, {}, function(data){loader.handle_response(data);loader.adjust_position();})
            }
        }
    }

    this.open_iframe = function(url, width, height){
        loader.open_iframe(url, width, height)
        if (loader.callback_iframe_loaded){
            var id = '#'+loader.target_id
            $(id + " iframe").load(function(){
                loader.callback_iframe_loaded()
            })
        }
    }

    loader.open_iframe = function(url, width, height) {
        url = loader._remake_url(url)
        var array_css = new Array("overflow: auto")
        array_css.push("border: 0px")
        array_css.push("width: "+width)
        array_css.push("height: "+height)
        var css = array_css.join(";")
        var iframe_code = "<iframe border='0px' frameborder='0px' " + 
            "style='"+css+"' " + "src='"+url+"'></iframe>"
        $(loader.container).html(iframe_code)
        loader.adjust_position()
        loader.showed += 1
        if(loader.frozen_size){
            loader.freeze_size()
        }
    }

    this.take = function(id){
        var content = $(id).html()
        $(loader.container).html(content)
        loader.showed += 1
        if(loader.frozen_size){
            loader.freeze_size()
        }
    }

    this.write = function(html){
        $(loader.container).html(html)
        loader.adjust_position()
        loader.showed += 1
        if(loader.frozen_size){
            loader.freeze_size()
        }
    }

    this.remove_close_button = function(){
        $("#"+loader.target_id+" td.top-right").html("")
        $("#"+loader.target_id+" td.top-right").css({'background-color': '#ededed'})
    }

    return this
}


function LoadAppInto(url, id, callback){
    $.get(url, {}, function(data){
        $(id).html(data)
        callback()
    })
}

function pop(url, data){var w = new Window();w.create();w.open_url(url, data);w.cover_background();w.set_close_button("/images/CloseBtn.png");w.hide_edges();w.show();}
function load_sized_app(url, data, width, height){var w = new Window();w.create();w.open_url(url, data);w.set_width(width);w.set_height(height);w.cover_background();w.show();}
function load_app(url, data){load_sized_app(url, data, 'auto', 'auto');}
function LoadApp(url){load_sized_app(url, '', 'auto', 'auto');}
function LoadStickyApp(obj, url, pos){var w = new Window(); w.create_naked_window();w.open_url(url); w.attach_to(obj, pos);w.show();}

function LoadBoundApp(target, url){
    var loader = new Object

    loader.target_id = target
    loader.target = $('#'+target)
    loader.saved = ""
    
    if(url.indexOf('rand=')<0){
        if(url.indexOf('?')>0){
            url = url + "&rand=" + Math.random()
        } else {
            url = url + "?rand=" + Math.random()
        }
    }
    
    loader.request_url = url
    table_html = "<table class='BoundApp' align='center'>"+
        "<tr><td class='top-left corner edge'><img src='/images/runningman.gif'></td>     <td class='top-middle edge'></td>"+
        "<td class='top-right corner edge'></td></tr>"+
        "<tr><td class='main-left edge'></td>    <td class='main-middle'></td>    <td class='main-right edge'></td></tr>"+
        "<tr><td class='bottom-left corner edge'></td>  <td class='bottom-middle edge'></td>  <td class='bottom-right corner edge'></td></tr>" + 
        "</table>"

    loader.create = function(){
        loader.saved = $(loader.target).html()
        $('#'+loader.target_id+' *').hide()
        $(loader.target).append(table_html)
        $(loader.target+"table.BoundApp td.top-right").html("<span class='clickable close-button'>X</span>")
        $(loader.target+"table.BoundApp td.main-middle").html("<img src='/images/progress-bar.gif' width='220px' height='19px'>")
        $(loader.target+"table.BoundApp td.top-right span.close-button").click(function(){
                // $(loader.target).html(loader.saved)
                $('#'+loader.target_id+' table.BoundApp').remove()
                $('#'+loader.target_id+' *').show()
                loader = false
            })
    }
    
    this.run = function(){
        loader.create()
        $.get(loader.request_url, {}, function(data){
            $("#" + loader.target_id + " table.BoundApp td.main-middle").html(data)
        })
    }

    this.run()
}

function LoadPostedBoundApp(target, url, data){
    var loader = new Object

    loader.target_id = target
    loader.target = $('#'+target)
    loader.saved = ""
    
    if(url.indexOf('rand=')<0){
        if(url.indexOf('?')>0){
            url = url + "&rand=" + Math.random()
        } else {
            url = url + "?rand=" + Math.random()
        }
    }
    
    loader.request_url = url
    table_html = "<table class='BoundApp' align='center'>"+
        "<tr><td class='top-left corner edge'><img src='/images/runningman.gif'></td>     <td class='top-middle edge'></td>"+
        "<td class='top-right corner edge'></td></tr>"+
        "<tr><td class='main-left edge'></td>    <td class='main-middle'></td>    <td class='main-right edge'></td></tr>"+
        "<tr><td class='bottom-left corner edge'></td>  <td class='bottom-middle edge'></td>  <td class='bottom-right corner edge'></td></tr>" + 
        "</table>"

    loader.create = function(){
        loader.saved = $(loader.target).html()
        $('#'+loader.target_id+' *').hide()
        $(loader.target).append(table_html)
        $(loader.target+"table.BoundApp td.top-right").html("<span class='clickable close-button'>X</span>")
        $(loader.target+"table.BoundApp td.main-middle").html("<img src='/images/progress-bar.gif' width='220px' height='19px'>")
        $(loader.target+"table.BoundApp td.top-right span.close-button").click(function(){
                // $(loader.target).html(loader.saved)
                $('#'+loader.target_id+' table.BoundApp').remove()
                $('#'+loader.target_id+' *').show()
                loader = false
            })
    }
    
    this.run = function(){
        loader.create()
        $.post(loader.request_url, data, function(data){
            $("#" + loader.target_id + " table.BoundApp td.main-middle").html(data)
        })
    }

    this.run()
}

function page_recover(){
    $("div._Window").remove()
}

function page_on_process(){
    var w = new Window()
    w.create()
    w.cover_background()
    w.show()
}

function LoadWidget(widget, params, pos, from){
    // pos = 0: use LoadApp
    // otherwise, use LoadStickyApp
    var url = "/scripts/load.py/widget?widget=1&name="+widget
    if(params){
        url += "&"+params
    }
    if(pos==0){
        LoadApp(url)
    } else {
        LoadStickyApp(from, url, pos)
    }
}

function load_widget(widget, params, pos, from){
    // pos = 0: use LoadApp
    // otherwise, use LoadStickyApp
    var url = "/scripts/load.py/widget?widget=1&name="+widget
    if(params){
        url += "&"+params
    }
    if(pos==0){
        load_app(url, '')
    } else {
        LoadStickyApp(from, url, pos)
    }
}

function LoadWidgetInto(widget, params, target){
    // pos = 0: use LoadApp
    // otherwise, use LoadStickyApp
    var url = "/scripts/load.py/widget?widget=1&name="+widget
    if(params){
        url += "&"+params
    }
    
    $.get(url, {}, function(data){
        $("#"+target).html(data)
    })
}

function Cookie(){

    var cookie = new Object

    this.set = function(name, value, days){
    	if (days) {
    		var date = new Date();
    		date.setTime(date.getTime()+(days*24*60*60*1000));
    		var expires = "; expires="+date.toGMTString();
    	}
    	else var expires = "";
    	document.cookie = name+"="+value+expires+"; path=/";
    }

    this.get = function(name){
    	var nameEQ = name + "=";
    	var ca = document.cookie.split(';');
    	for(var i=0;i < ca.length;i++) {
    		var c = ca[i];
    		while (c.charAt(0)==' ') c = c.substring(1,c.length);
    		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    	}
    	return null;

    }

    this.remove = function(name){
	    createCookie(name,"",-1);
    }
}

function toggle(id) {
    obj = document.getElementById(id)
    if( obj.style.display == 'block')
        obj.style.display = 'none'
    else {
        obj.style.display = 'block'
    }
}

function show(id, style){
    if(!style) style='block'
    obj = document.getElementById(id)
    obj.style.display = style
}

function hide(id){
    obj = document.getElementById(id)
    obj.style.display = "none"
}

function find_position(obj) {
    var curleft = curtop = 0
    if (obj.offsetParent) {
        do {    
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        } while (obj = obj.offsetParent);
    }

    return [curleft, curtop]
}

function gpxdictionary() {
    /*
        associative array

        usage:
            dic = new gpxdictionary()
            dic.set('name', 'sam')  # dic['name'] = 'sam'
            dic.add('sex', 'male') # dic['sex'] = 'male'
            # use set, instead of add
            dic.set('age', '27')

            dic.get('name') # return 'sam'
            dic.remove('age') # now only name, and sex
            dic.length() # return 2
            dic.keys() # return array('name', 'sex')
    */ 
    var dictionary = new Object

    dictionary.table = new Array
    dictionary.keys = new Array

    this.set = function(key, value) {
        dictionary.table[key] = value
        for ( var i=0; i<dictionary.keys.length; i++ ) {
            if ( key == dictionary.keys[i] ) 
                break

            if ( i == (dictionary.keys.length - 1) ) {
                dictionary.keys.push(key)
                dictionary.table.push(value)
                break
            }
        }
        if ( dictionary.keys.length == 0 ) {
            dictionary.keys.push(key)
            dictionary.table.push(value)
        }
    }

    this.add = function(key, value) {
        dictionary.table[key] = value
        dictionary.keys.push(key)
    }
    
    this.get = function(key) {
        return dictionary.table[key]
    }

    this.remove = function(key) {
        newtable = new Array
        newkeys = new Array

        for( var i = 0; i < dictionary.keys.length; i++ ) {
            a_key = dictionary.keys[i]
            if ( a_key == key )
                continue

            newtable[a_key] = dictionary.table[a_key]
            newkeys.push(a_key)
        }

        dictionary.table = newtable
        dictionary.keys = newkeys
    }

    this.length = function() {
        return dictionary.keys.length
    }

    this.keys = function() {
        return dictionary.keys
    }

    this.count = function() {
        /* same as length() */
        return dictionary.keys.length
    }

    this.get_pair_at = function(pos) {
        if ( pos < 1 || pos > dictionary.keys.length ) return 0
        return new Array(dictionary.keys[pos-1], dictionary.table[pos-1])
    }
}

function parse_xml_text(text) {
    /*
        usage:
            xml = parse_xml_text(xml_content)
            item = xml.getElementsByTagName('photo')
    */
    var xmlDoc
    try //Internet Explorer
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(text);
    }
    catch(e)
    {
        try //Firefox, Mozilla, Opera, etc.
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(text,"text/xml");
        }
        catch(e)
        {
            //alert(e.message);
            return xmlDoc;
        }
    }
    return xmlDoc
}

function get_ajax_object() {
    /*
        usage:
            ajax = get_ajax_object()
            ajax.onreadystatechange = function() 
                { ...code dealing the resposne from server ...}
            ajax.open('GET', url, true)
            ajax.send(null)
    */
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }  catch (e)  {
                 alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }

    return xmlHttp;
}

function gpxImageFader(container_id) {
    var fader = new Object
    fader.images = new Array()
    fader.pos = 0 // position of the current item displaying
    fader.container_width = '200px'
    fader.container_height = '200px'
    fader.fading_id = 0
    fader.fadein = 1 // 0 => fadeout
    fader.value = 0
    fader.browser = '' // 'IE' for MSIE
    fader.speed = 0.02 // 2 for MSIE
    fader.max = 1 // 100 for MSIE
    if ( !container_id ) return 0

    fader.container = document.getElementById(container_id)

    this.addImage = function(img_src, link, title) {
        var image = '<a href="'+link+'" target="_blank"><img src="'+img_src+'" alt="'+title+'" title="'+title+'" style="opacity: 0; filter: alpha(opacity=0);"></a>'
        fader.container.innerHTML = fader.container.innerHTML + image
    }

    fader.save_images = function(){
        fader.images = new Array()
        var images = fader.container.getElementsByTagName('a')
        for(var i = 0; i<images.length; i++){
            fader.images.push(images[i])
        }
    }

    fader.setOpacity = function(image, value) {
        if ( fader.browser == 'IE')
            image.filters.alpha.opacity = value
        else
            image.style.opacity = value
    }

    fader.doFade = function() {
        if (fader.fadein) {
            fader.value += fader.speed
            if (fader.value > fader.max) { 
                fader.value = fader.max
                fader.fadein = 0
            }
        } else {
            fader.value -= fader.speed
            if (fader.value < 0) {
                fader.value = 0
                fader.fadein = 1
                fader.nextImage()
            }
        }
        fader.setOpacity(fader.image, fader.value)
    }

    fader.nextImage = function() {
        fader.pos += 1
        if (fader.pos >= fader.images.length) {
            fader.pos = 0
        }
        fader.fadein = 1
        for(var i = 0; i<fader.images.length; i++){
            if (i==fader.pos) {
                fader.images[i].style.display = 'inline'
            } else {
                fader.images[i].style.display = 'none'
            }
        }
        var image = fader.images[fader.pos]
        fader.image = image.getElementsByTagName('img')[0]
        fader.image.onmouseover = function() {
            clearInterval(fader.fading_id)
            if (fader.browser == 'IE')
                fader.image.filters.alpha.opacity = fader.max
            else
                fader.image.style.opacity = fader.max
            fader.value = fader.max
        }
        fader.image.onmouseout = function() {
            fader.fading_id = setInterval(fader.doFade, 80)
        }
        fader.setOpacity(fader.image, 0)
        return 
    }

    this.run = function() {
        fader.save_images()
        if ( navigator.appName == 'Microsoft Internet Explorer' ) {
            fader.browser = 'IE'
            fader.speed = fader.speed * 100
            fader.max = fader.max * 100
        }
        fader.container_width = fader.container.style.width
        fader.container_height = fader.container.style.height
        fader.pos = -1
        fader.image = fader.container.getElementsByTagName('img')[0]
        fader.nextImage()
        fader.fading_id = setInterval(fader.doFade, 80)
    }
}

function checkbox_trigger(checkbox, url, checked_str, unchecked_str) {
    var checked = $(checkbox).attr('checked')
    var url2 = ''
    if(checked){
        url2 = url+"?"+checked_str
    } else {
        url2 = url+"?"+unchecked_str
    }
    $.get(url2, {}, function(data){})
}

function checkbox_clicked(checkbox, url, checked_str, unchecked_str, callback) {
    var checked = $(checkbox).attr('checked')
    var url2 = ''
    if(url.indexOf('?')<0){
        url2 = url+"?"
    } else {
        url2 = url+"&"
    }
    if(checked){
        url2 = url2+checked_str
    } else {
        url2 = url2+unchecked_str
    }
    $.get(url2, {}, callback)
}

