/*
  DEPRECATED

  window.onload = function() {
    imgs = document.getElementsByTagName('img');
    imgs_length = imgs.length;
    wallpapers = [];
    for(i = 0; i < imgs_length; i++) {
        if(imgs[i].className.match(/wp-image-3/)) {
            img = imgs[i];
            img.onclick = function(event) {
                image_link = event.currentTarget.src.replace('/wp-content/uploads/', '/wallpapers/').replace(/[0-9]+x[0-9]+/, screen.width + 'x' + screen.height);
                window.location.href = image_link;
            }
        }
    }
}*/

jQuery.fn.wheel = function(bar, field, dot, pointer, values, initColor) {
    var HSV2RGB = function(H, S, V) {   // Thanks EasyRGB.com !
        if ( S == 0 )
        {
            R = V * 2.55;
            G = V * 2.55;
            B = V * 2.55;
        } else {
            H = H/360; S = S/100; V = V/100;
            vH = H * 6;
            if ( vH == 6 ) vH = 0;
            vI = Math.floor(vH);
            v1 = V * ( 1 - S );
            v2 = V * ( 1 - S * ( vH - vI ) );
            v3 = V * ( 1 - S * ( 1 - ( vH - vI ) ) );

            if      ( vI == 0 ) { vR = V     ; vG = v3 ; vB = v1 ; }
            else if ( vI == 1 ) { vR = v2 ; vG = V     ; vB = v1 ; }
            else if ( vI == 2 ) { vR = v1 ; vG = V     ; vB = v3 ; }
            else if ( vI == 3 ) { vR = v1 ; vG = v2 ; vB = V     ; }
            else if ( vI == 4 ) { vR = v3 ; vG = v1 ; vB = V     ; }
            else                { vR = V  ; vG = v1 ; vB = v2    ; }
            R = vR * 255;
            G = vG * 255;
            B = vB * 255;
        }
        return [parseInt(R), parseInt(G), parseInt(B)];
    }
    var RGB2HSV = function(R, G, B) {
        var var_R = ( R / 255 );
        var var_G = ( G / 255 );
        var var_B = ( B / 255 );

        var var_Min = Math.min( var_R, var_G, var_B );
        var var_Max = Math.max( var_R, var_G, var_B );
        var del_Max = var_Max - var_Min;
        var V = var_Max;

        if ( del_Max == 0 ) {
            var H = 0;
            var S = 0;
        } else {
            var S = del_Max / var_Max;

            var del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
            var del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
            var del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max;

            if      ( var_R == var_Max ) var  H = del_B - del_G;
            else if ( var_G == var_Max ) var H = ( 1 / 3 ) + del_R - del_B;
            else if ( var_B == var_Max ) var H = ( 2 / 3 ) + del_G - del_R;

            if ( H < 0 ) H += 1;
            if ( H > 1 ) H -= 1;
        }
        return [parseInt(H*360), parseInt(S*100), parseInt(V*100)];
    }
    var toHex = function(i) {
        num = parseInt(i).toString(16);
        return (num.length == 1 ? '0' + num : num);
    }
    var wheel = $(this);
    var bar = $(bar);
    var field = $(field);
    var dot = $(dot);
    var pointer = $(pointer);
    var light = 100;
    var angle = 0;
    var radius = 0;
    var values = {r: $('#' + values + '_r'), g: $('#' + values + '_g'), b: $('#' + values + '_b'), hex: $('#' + values + '_hex')};
    var countRGB = function(e, o) {
        o = $(o);
        var center = {x: o.width() / 2, y: o.height() / 2}
        var max_radius = o.width() > o.height() ? center.x : center.y;
        var x = e.pageX - o.position().left - center.x;
        var y = e.pageY - o.position().top - center.y;
        var angle = 180 - Math.atan2(x,y) * 180 / Math.PI;
        var radius = Math.sqrt(Math.pow(x,2) + Math.pow(y,2))
        radius = radius > max_radius ? max_radius : radius;
        radius = radius/max_radius * 100;
        rgb = HSV2RGB(angle, radius, light);
        return [rgb, angle, radius];
    }

    var fillColorsAndPointer = function(fangle, fradius, flight) {
      if(typeof(fradius) == 'undefined' && typeof(flight) == 'undefined') {
          cRGB = fangle;
          cHSV = RGB2HSV(cRGB[0], cRGB[1], cRGB[2]);
          angle = cHSV[0]; radius = cHSV[1]; light = cHSV[2];
	  fangle = angle; fradius = radius; flight = light;
          var center = {x: wheel.width() / 2, y: wheel.height() / 2}
          var max_radius = wheel.width() > wheel.height() ? center.x : center.y;
          var rr = fradius / 100 * max_radius;
          dot.css('left', (Math.cos((fangle - 90) * Math.PI / 180) * rr + center.x).toString() + 'px').css('top', (Math.sin((fangle - 90) * Math.PI / 180) * rr + center.y).toString() + 'px').show();
      } else {
          cRGB = HSV2RGB(fangle, fradius, flight);
      }
      var pos = flight / 100 * pointer.width() - 7;
      pointer.css('background-position', pos.toString() + 'px 0px');
      bar.css('backgroundColor', 'rgb(' + HSV2RGB(fangle, fradius, 100).join(', ') + ')');
      field.css('backgroundColor', 'rgb(' + cRGB.join(', ') + ')');
      values['r'].val(cRGB[0]); values['g'].val(cRGB[1]); values['b'].val(cRGB[2]);values['hex'].val((toHex(cRGB[0]) + toHex(cRGB[1]) + toHex(cRGB[2])).toUpperCase());
    }
    if(initColor && initColor.length == 6) {
        v = initColor.toUpperCase();
        fillColorsAndPointer([parseInt(v.substr(0,2), 16), parseInt(v.substr(2,2), 16), parseInt(v.substr(4,2), 16)]);
    }
   
    $(this).bind('mousemove', function(e) {
      cRGB = countRGB(e, $(this))[0];
      field.css('backgroundColor', 'rgb(' + cRGB.join(', ') + ')');
      values['r'].val(cRGB[0]); values['g'].val(cRGB[1]); values['b'].val(cRGB[2]);values['hex'].val((toHex(cRGB[0]) + toHex(cRGB[1]) + toHex(cRGB[2])).toUpperCase());
    });
    $(this).bind('mouseout', function(e) {
      cRGB = HSV2RGB(angle, radius, light);
      field.css('backgroundColor', 'rgb(' + cRGB.join(', ') + ')');
      values['r'].val(cRGB[0]); values['g'].val(cRGB[1]); values['b'].val(cRGB[2]);values['hex'].val((toHex(cRGB[0]) + toHex(cRGB[1]) + toHex(cRGB[2])).toUpperCase());
    });
    $(this).bind('click', function(e) {
      cRGB = countRGB(e, $(this));
      angle = cRGB[1];
      radius = cRGB[2];
      values['r'].val(cRGB[0][0]); values['g'].val(cRGB[0][1]); values['b'].val(cRGB[0][2]);values['hex'].val((toHex(cRGB[0][0]) + toHex(cRGB[0][1]) + toHex(cRGB[0][2])).toUpperCase());

      bar.css('backgroundColor', 'rgb(' + HSV2RGB(angle, radius, 100).join(', ') + ')');
      dot.css('left', (e.pageX - $(this).position().left - parseInt($(this).css('margin-left')) -5).toString() + 'px').css('top', (e.pageY - $(this).position().top - parseInt($(this).css('margin-top')) - 5).toString() + 'px').show();
    });
    bar.find('img').bind('mousemove', function(e) {
      var light = (e.pageX - $(this).position().left) / $(this).width() * 100;
      fillColorsAndPointer(angle, radius, light);
    });
    bar.find('img').bind('click', function(e) {
      light = (e.pageX - $(this).position().left) / $(this).width() * 100;
      fillColorsAndPointer(angle, radius, light);
    });
    bar.find('img').bind('mouseout', function(e) {
      fillColorsAndPointer(angle, radius, light);
    });
    values['hex'].bind('keyup', function(e) {
        if(e.keyCode == 13) {
            values['hex'].blur();
	}
    });
    values['hex'].bind('blur', function(e) {
        if($(this).val().match(/[a-fA-F0-9]{6}/)) {
	   var v = $(this).val();
	   fillColorsAndPointer([parseInt(v.substr(0,2), 16), parseInt(v.substr(2,2), 16), parseInt(v.substr(4,2), 16)]);
	}
    });
    values['r'].bind('blur', function(e) {
        if(parseInt(values['r'].val()) >= 0 && parseInt(values['g'].val()) >= 0 && parseInt(values['b'].val()) >= 0 && parseInt(values['r'].val()) <= 255 && parseInt(values['g'].val()) <= 255 && parseInt(values['b'].val()) <= 255) {
	    values['hex'].val((toHex(values['r'].val()) + toHex(values['g'].val()) + toHex(values['b'].val())).toUpperCase());
	    values['hex'].blur();
	}
    });
    values['g'].bind('blur', function(e) { values['r'].blur(); });
    values['b'].bind('blur', function(e) { values['r'].blur(); });
    values['r'].bind('keyup', function(e) { if(e.keyCode == 13) { values['r'].blur(); } });
    values['g'].bind('keyup', function(e) { if(e.keyCode == 13) { values['r'].blur(); } });
    values['b'].bind('keyup', function(e) { if(e.keyCode == 13) { values['r'].blur(); } });
}



$(document).ready(function() {
    $('img').each(function(i) {
        if($(this).hasClass('wp-image-3')) {
	    $(this).bind('click', function(e) {
	        window.location.href = $(this).attr('src').replace('/wp-content/uploads/', '/wallpapers/').replace(/[0-9]+x[0-9]+/, screen.width + 'x' + screen.height);
	    });
	}
    });
    if($('#wallpaper').is('div')) {
        $('#wheel').wheel($('#bar'), $('#wallpaper').find('img'), $('#dot'), $('#barpointer'), 'rgb', $('#wallpaper').attr('name'));
	$('#wallpaper img').attr('src', $('#wallpaper img').attr('src').replace('480x360', 'transparent'));
	$('#cresolution').val(screen.width + 'x' + screen.height);
	$('#cfile').val($('#wallpaper img').attr('src'));
    }
});


