<!doctype>
<html>
<head>
    <title>pluie.org - svan demo - v0.4</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    body        { background-color:#888; color:white; font-family:arial; font-size:1.3rem; }
    #test       { border: 1px dashed #ccc; }
    body > div  { border-radius:20px; margin:40px; padding:20px; background-color: #ccc; color:black; }
    body > span { font-size:0.8rem; }
    button      { padding:5px 15px; }
    h3          { margin:35px 0 10px 0; }
    h2          { margin:5px 0 0 0; }
    textarea    { padding:8px 5px; border-radius:10px; border-style:solid; width:100%; height:120px; font-size:1.2rem; }
    #test       { margin:20px; background-color:white; padding:20px; border: 1px dashed #aaa; }
    .cssAdded   { color:#990000; }
    #output     { margin-top:250px; }
    </style>
</head>
<body>
<h2>pluie.org - svan demo : </h2>
<div style="border:1px dashed #ccc; position:fixed; width:90%; ">
    <button id="click">click</button>
    <button id="addClass">addClass</button>
    <button id="removeClass">removeClass</button>
    <button id="toggle">toggle</button>
    <button id="fade">fade</button>
    <button id="find">$('div').find('button')</button>
    <button id="ajax">ajax</button>
</div>
<div style="border:1px dashed #ccc; position:fixed; width:90%; top:150px;">
<select id="selnode">
    <option value="0">value : 0</option>
    <option value="1">value : 1</option>
    <option value="2">value : 2</option>
</select>
<button id="attrget">attr getselect</button>
<button id="attrset">attr set select to 1 </button>
</div>
<div id="output"></div>
<script type="text/javascript" src="src/svan-min.js"></script>
<script type="text/javascript">

var $l = (function alias() { 
    var a = localStorage;
    return {
        clear : function() { return a.clear(); },
        get   : function(k) { return a.getItem(k); },
        rem   : function(k) { return a.removeItem(k); },
        set   : function(k, v) { return a.setItem(k, v); }
    };
}());

var $j = (function alias() { 
    var a = JSON;
    return {
        str : function(o) { return a.stringify(o); },
        obj : function(s) { return a.parse(s); }
    };
}());

$(document).ready(function() {
    var sep = "<br/>----------------";
    var o   = function(msg, c) {
        msg += '<br/>';
        $('#output').append(msg);
        if (c) console.log(msg.replace(/\<br\/\>/g, '\n'));
    }
    o('on dom ready event<br/>', 1);
    
    $('#click').on('click', function(e) {
        o(sep);
        o('click click event<br/>context : #'+this.id);
        console.log(e);
        console.log(this);
    });

    $('#addClass').on('click', function(e) {
        o(sep);
        o('addClass click event<br/>context    : #'+this.id+'<br/>css before : '+this.className);
          $(this).addClass('cssAdded');
          o('css after  : '+this.className);
    });

    $('#removeClass').on('click', function(e) {
        o(sep);
        var n = $('#addClass').first();
        o('removeClass event<br/>context : #'+this.id+'<br/>css before : '+n.className);
        $(n).removeClass('cssAdded');
        o('css after  : '+n.className);
    });

    $('#toggle').on('click', function(e) {
        o(sep);
        var n = $('#addClass').first();
        o('toogle event<br/>context : #'+this.id+'<br/>css before : '+n.className);
        $(n).toggle('cssAdded');
        o('css after  : '+n.className);
    });

    $('#attrset').on('click', function(e) {
        o(sep);
        $('#selnode').val(1);
        o('set selectedIndex to 1');
    });

    $('#attrget').on('click', function(e) {
        o(sep);
        o('get selected value : '+($('#selnode').val()));
    });

    $('#find').on('click', function(e) {
        o(sep);
        o("find $('div').find('button')");
        $('div').find('button').all().forEach(function(n) {
            o(n.getAttribute('id'));
        });
    });

    $('#fade').on('click', function(e) {
        o(sep);
        o('fade click event<br/>context : #'+this.id);
        $('#output').fadeOut(600, function() {
            o('end fade out');
            $(this).fadeIn(1600, function() {
                o('end fadeIn');
            });
        });
    });

    $('#ajax').on('click', function(e) {
        o(sep);
        o('ajax click event');
        $.ajax({
            url   : 'http://domain.dev/ajax-done',
            async : true,
            data  : { toto : "tata" },
            done  : function(data) {
                o('ajax done receiving data<br/>' + $j.str(data) +'<br/>');
                o($j.str(xhr));
            },
            always : function(data) {
                o('ajax always<br/>');
            },
            method : 'POST'
        });

        $.ajax({
            url   : 'http://domain.dev/ajax-fail',
            async : false,
            fail  : function(data, xhr) {
                o('ajax fail receiving data<br/>' + $j.str(data) +'<br/>');
                o($j.str(xhr));
            },
            always : function(data) {
                o('ajax always<br/>');
            },
            method : 'GET'
        });

    });

});
</script>
</body>
</html>