//var bg_pos =  ['','top left','top center','top right','center left','center center','center right','bottom left','bottom center','bottom right'];
var bg_pos =  ['','left top','center top','right top','left center','center center','right center','left bottom','center bottom','right bottom'];
var ftid = 0;
$(function(){
	$("#menu6 a, #resume2 a, #ttbm2 a").click(function(event){
	   if($("#setting").is(':hidden')){
			drawPanel();
	   }else{
	  		$("#setting").slideToggle('normal').empty();
	   }
	});	
});
function drawPanel(){
	$.ajax({
		type: "GET",
		url: "/themes/getthemelist/1/3/",
		data: "rand="+Math.random(),
		beforeSend: function(msg){
			$('#setting').height(80).html('<img src="/images/spin.gif" style="position:relative; top:30px; left:450px;" />').slideDown('fast'); $("html, body").animate({scrollTop:0}, 400); },
			success: function(msg){ $('#setting').hide().empty().height(250).html(msg).slideDown('slow', function(){ $('#setting').height(250); }); loadTheme(); }
	});
}
function loadTheme(){
	$("#sewrapper > .setab > ul > li").click(function(event){ 
		 var cid = ''+this.id;
		$("#sewrapper > .setab > ul > li").removeClass();
		$('#'+cid).addClass("seselected")
		$("#sea1, #sea2, #sea3").hide();
		$("#se"+cid).show();
		if(cid=='a1'){ 
			if($(this).siblings().length==2){
				$("#a3 a").text("สร้างธีมใหม่");
			}
			getTheme(1,1);
		}else if(cid=='a2'){
			if($(this).siblings().length==2){
				$("#a3 a").text("สร้างธีมใหม่");
			}
			getTheme(1,2);
		}else if(cid=='a3'){ 
			if($('#a3 a').text()=='แก้ไขธีม'){
				newTheme(ftid); 
			}else{
				newTheme(0);
			}
		}
	  });
	$('#close_theme a').click(function(event){
		event.preventDefault();
		$("#setting").slideToggle('normal').empty();
	});
	attachTheme();
}
function getTheme(cpage, ctype){
	var cpanel = (ctype==1)?$("#sea1"):$("#sea2");
	var curl = "/themes/getthemelist/"+cpage+"/"+ctype+"/";
	$.ajax({
	type: "GET",
	url: curl,
	data: "rand="+Math.random(),
	beforeSend: function(msg){ $(cpanel).empty().html("<img src='/images/spin.gif' style='position:relative; top:80px; left:450px;' />");},
	success: function(msg){ 
			$(cpanel).empty().html(msg); 
			if(ctype==2){ attachTheme(2); }else{attachTheme(); }
		}
	});
}
function newTheme(ctid){
	$.ajax({
	type: "GET",
	url: "/themes/newtheme/"+ctid+"/",
	data: "rand="+Math.random(),
	beforeSend: function(msg){ $("#sea3").empty().html("<img src='/images/spin.gif' style='position:relative; top:80px; left:450px;' />");},
	success: function(msg){ 
			$("#sea3").empty().html(msg);
			attachNewTheme();
			
		}
	});
}
function attachTheme(flag){
	$("p.ctaction a").click(function(event){
		event.preventDefault();
		if($(this).text()=='เพิ่มเดี๋ยวนี้'){
			$.ajax({
			type: "GET",
			url: "/themes/change/"+$(this).attr('name'),
			data: "rand="+Math.random(),
			beforeSend: function(msg){ $("#sea1, #sea2").empty().html("<img src='/images/spin.gif' style='position:relative; top:80px; left:450px;' />");},
			success: function(msg){ 
					location.reload(true);
				}
			});
		}else if($(this).text()=='แก้ไข'){
			ftid = $(this).attr('name');
			$('#a3 a').text('แก้ไขธีม');
			$("#sewrapper > .setab > ul > li:last").click();
		}else if($(this).text()=='แชร์'){
			//
			if(!confirm("เมื่อแชร์แล้ว\n- คุณไม่สามารถแก้ไข Theme นี้\n- คุณไม่สามารถลบ Theme นี้ \n คุณต้องการแชร์หรือไม่"))
			return;
			var curl = $(this).attr("name");
			var tparent = $(this).parent();
			$(this).hide();
			$(this).after("&nbsp;<img src='/images/reload.gif' />&nbsp;");
			$.ajax({
			type: "GET",
			url: '/themes/share/'+curl,
			data: "rand="+Math.random(),
			success: function(msg){ 
				if(msg.substring(0, 2)=='OK'){
					$("a:contains('แก้ไข'), a:contains('ลบ'), a:contains('แชร์'), img", tparent).remove();
				}
			}
		});
			//
		}else if($(this).text()=='ลบ'){
			if(!confirm('คุณต้องการลบ Theme นี้ใช่หรือไม่'))
				return;
			var tmp_ctn = $(this).parents('div.ct');
			$.ajax({
			type: "GET",
			url: "/themes/delete/"+$(this).attr('name')+"/",
			data: "rand="+Math.random(),
			success: function(msg){
					if(msg.substring(0, 2)=='OK'){
						tmp_ctn.remove();
					}
				}
			});
		}
	});
	if(flag){
		$("#sesubpage2 a").click(function(event){
		event.preventDefault();
		getTheme($(this).attr('name'), 2);
	});
	}else{
		$("#sesubpage a").click(function(event){
			event.preventDefault();
			getTheme($(this).attr('name'), 1);
		});
	}
}

function attachNewTheme(){
	
	$("#secontrol li").click(function(event){
		var cid = ''+this.id;
		$("#secontrol li").removeClass();
		$("#"+cid).addClass("seselected");
		$("#secontrolbody>div").hide();
		$("#se"+cid).show();
	});
	/** Background **/
	$("#xbg, #ybg, div.sedetail input:radio, #yhead, div.sedetail2 input:radio").click(function(){ setRepeat(); });
	$("#colorbg, #picbg, #pichead, #colorhead, #hihead, #colorsub, #bgcolorsub, #picbottom, #colorbottom, #linkfont, #subfont, #comfont").change(function(){ setRepeat(); });
	setRepeat();
	var fpicker = $.farbtastic('#mypicker');
    $('.secolor') .each(function () { fpicker.linkTo(this); return true; })
      .click(function() {
        fpicker.linkTo(this);
		var tpos = $(this).position();
		var ttop = tpos.top+46;
		var tleft = tpos.left-60;
		$('#mypicker').css({left: tleft+'px', top: ttop+'px'}).show();
		 $(document).bind('mousedown', showMyColor);
      });
	 $(".sedelpic").click(function(event){
		event.preventDefault();
		if(!confirm('คุณต้องการลบรูปภาพนี้ใช่ไหม'))
			return;
		var curl = $(this).attr("href");
		var tparent = $(this).parent();
		$(this).hide();
		$(this).after("<div><img src='/images/reload.gif' /></div>");
		$.ajax({
		type: "GET",
		url: curl,
		data: "rand="+Math.random(),
		success: function(msg){ 
			if(msg.substring(0, 2)=='OK'){
				$('a, img', tparent).remove();
				setRepeat();
			}
		}
	});
		//
	});
	 $("#theme_form").submit(function(event){
		event.preventDefault();
		$("#theme_form").ajaxSubmit({
			beforeSubmit: function(){
			$("#theme_form").hide();
			$("#secontrol").append("<img src='/images/spin.gif' style='position:relative; top:80px; left:250px;' />"); },
			success: function(msg){ 
				if(msg.substring(0, 2)=='OK'){
					location.reload(true);
				} 
			}
		});
	});
}

function showMyColor(ev){
	setThemeColor();
  	$('#mypicker').hide();
	 $(document).unbind('mousedown', showMyColor);
}

function setRepeat(){
	/*BG*/
	if($('#picbg').val()){
			$('#seview').css("background-image", "url("+$('#picbg').val()+")");
		}else if($('#picbg ~ a').attr('name')){
			$('#seview').css("background-image", "url("+$('#picbg ~ a').attr('name')+")");
		}else{
			$('#seview').css("background-image", "");
	}
	var ret = 'no-repeat';
	if($("#xbg").is(':checked') && $("#ybg").is(':checked')){
		ret = 'repeat';
	}else if($("#xbg").is(':checked')){
		ret = 'repeat-x';
	}else if($("#ybg").is(':checked')){
		ret = 'repeat-y';
	}
	$('#seview').css("background-repeat",ret);
	if($("div.sedetail td input:radio").is(":checked")){
		$('#seview').css("background-position", ""+bg_pos[$("div.sedetail td input:radio:checked").val()]);
	}
	/*Header*/
	if($("#pichead").val()){
			$('#seviewheader').css("background-image", "url("+$("#pichead").val()+")");
	}else if($("#pichead ~ a").attr('name')){
			$('#seviewheader').css("background-image", "url("+$("#pichead ~ a").attr('name')+")");
	}else{
			$('#seviewheader').css("background-image", "");
	}
	var retheader = "repeat-x";
	if($("#yhead").is(":checked")){
		retheader = "repeat";
	}
	$('#seviewheader').css("background-repeat",retheader);
	if($("div.sedetail2 td input:radio").is(":checked")){
		$('#seviewheader').css("background-position", ""+bg_pos[$("div.sedetail2 td input:radio:checked").val()]);
	}
	if((isNaN($('#hihead').val())) || ($('#hihead').val()<100) || ($('#hihead').val()>300)){
		$('#hihead').val(150);
	}
	/** Footer **/
	if($("#picbottom").val()){
			$('#seviewfooter').css("background-image", "url("+$("#picbottom").val()+")");
	}else if($("#picbottom ~ a").attr('name')){
			$('#seviewfooter').css("background-image", "url("+$("#picbottom ~ a").attr('name')+")");
	}else{
			$('#seviewfooter').css("background-image", "");
	}
	setThemeColor();
}
function setThemeColor(){
	$('#seview').css("background-color", $('#colorbg').val());
	$('#seviewheader').css("background-color", $('#colorhead').val());
	if($('#colorsub').val() || $('#colorsub').val('#000000')){
		$("#seviewtop, #seviewbody, #seviewfooter").css("border-color", ""+$('#colorsub').val());
		$("#seviewtop").css("background-color", ""+$("#colorsub").val());
	}
	$('#seviewbody').css("background-color", $('#bgcolorsub').val());
	$('#seviewfooter').css("background-color", $('#bgcolorsub').val());
	if($('#comfont').val() || $('#comfont').val('#888888')){
		$('#setext').css('color', ""+$('#comfont').val());
	}
	if($('#linkfont').val() || $('#linkfont').val('#5C89BE')){
		$('#selink').css('color', ""+$('#linkfont').val());
	}
	if($('#userfont').val() || $('#userfont').val('#98C123')){
		$('#seheader').css('color', ""+$('#userfont').val());
	}
	if($('#subfont').val() || $('#subfont').val('#FFFFFF')){
		$('#setop').css('color', ""+$('#subfont').val());
	}
}
//
// $Id: farbtastic.js,v 1.2 2007/01/08 22:53:01 unconed Exp $
// Farbtastic 1.2

jQuery.fn.farbtastic = function (callback) {
  $.farbtastic(this, callback);
  return this;
};

jQuery.farbtastic = function (container, callback) {
  var container = $(container).get(0);
  return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));
}

jQuery._farbtastic = function (container, callback) {
  // Store farbtastic object
  var fb = this;

  // Insert markup
  $(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
  var e = $('.farbtastic', container);
  fb.wheel = $('.wheel', container).get(0);
  // Dimensions
  fb.radius = 84;
  fb.square = 100;
  fb.width = 194;

  // Fix background PNGs in IE6
  if (navigator.appVersion.match(/MSIE [0-6]\./)) {
    $('*', e).each(function () {
      if (this.currentStyle.backgroundImage != 'none') {
        var image = this.currentStyle.backgroundImage;
        image = this.currentStyle.backgroundImage.substring(5, image.length - 2);
        $(this).css({
          'backgroundImage': 'none',
          'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
        });
      }
	  return true;
    });
  }

  /**
   * Link to the given element(s) or callback.
   */
  fb.linkTo = function (callback) {
    // Unbind previous nodes
    if (typeof fb.callback == 'object') {
      $(fb.callback).unbind('keyup', fb.updateValue);
    }

    // Reset color
    fb.color = null;

    // Bind callback or elements
    if (typeof callback == 'function') {
      fb.callback = callback;
    }
    else if (typeof callback == 'object' || typeof callback == 'string') {
      fb.callback = $(callback);
      fb.callback.bind('keyup', fb.updateValue);
      if (fb.callback.get(0).value) {
        fb.setColor(fb.callback.get(0).value);
      }
    }
    return this;
  }
  fb.updateValue = function (event) {
    if (this.value && this.value != fb.color) {
      fb.setColor(this.value);
    }else if(this.value==''){
		fb.callback.css('backgroundColor', '');
	}
  }

  /**
   * Change color with HTML syntax #123456
   */
  fb.setColor = function (color) {
    var unpack = fb.unpack(color);
    if (fb.color != color && unpack) {
      fb.color = color;
      fb.rgb = unpack;
      fb.hsl = fb.RGBToHSL(fb.rgb);
      fb.updateDisplay();
    }
    return this;
  }

  /**
   * Change color with HSL triplet [0..1, 0..1, 0..1]
   */
  fb.setHSL = function (hsl) {
    fb.hsl = hsl;
    fb.rgb = fb.HSLToRGB(hsl);
    fb.color = fb.pack(fb.rgb);
    fb.updateDisplay();
    return this;
  }

  /////////////////////////////////////////////////////

  /**
   * Retrieve the coordinates of the given event relative to the center
   * of the widget.
   */
  fb.widgetCoords = function (event) {
    var x, y;
    var el = event.target || event.srcElement;
    var reference = fb.wheel;

    if (typeof event.offsetX != 'undefined') {
      // Use offset coordinates and find common offsetParent
      var pos = { x: event.offsetX, y: event.offsetY };

      // Send the coordinates upwards through the offsetParent chain.
      var e = el;
      while (e) {
        e.mouseX = pos.x;
        e.mouseY = pos.y;
        pos.x += e.offsetLeft;
        pos.y += e.offsetTop;
        e = e.offsetParent;
      }

      // Look for the coordinates starting from the wheel widget.
      var e = reference;
      var offset = { x: 0, y: 0 }
      while (e) {
        if (typeof e.mouseX != 'undefined') {
          x = e.mouseX - offset.x;
          y = e.mouseY - offset.y;
          break;
        }
        offset.x += e.offsetLeft;
        offset.y += e.offsetTop;
        e = e.offsetParent;
      }

      // Reset stored coordinates
      e = el;
      while (e) {
        e.mouseX = undefined;
        e.mouseY = undefined;
        e = e.offsetParent;
      }
    }
    else {
      // Use absolute coordinates
      var pos = fb.absolutePosition(reference);
      x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;
      y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;
    }
    // Subtract distance to middle
    return { x: x - fb.width / 2, y: y - fb.width / 2 };
  }

  /**
   * Mousedown handler
   */
  fb.mousedown = function (event) {
    // Capture mouse
    if (!document.dragging) {
      $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
      document.dragging = true;
    }

    // Check which area is being dragged
    var pos = fb.widgetCoords(event);
    fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;

    // Process
    fb.mousemove(event);
    return false;
  }

  /**
   * Mousemove handler
   */
  fb.mousemove = function (event) {
    // Get coordinates relative to color picker center
    var pos = fb.widgetCoords(event);

    // Set new HSL parameters
    if (fb.circleDrag) {
      var hue = Math.atan2(pos.x, -pos.y) / 6.28;
      if (hue < 0) hue += 1;
      fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
    }
    else {
      var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
      var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
      fb.setHSL([fb.hsl[0], sat, lum]);
    }
    return false;
  }

  /**
   * Mouseup handler
   */
  fb.mouseup = function () {
    // Uncapture mouse
    $(document).unbind('mousemove', fb.mousemove);
    $(document).unbind('mouseup', fb.mouseup);
    document.dragging = false;
  }

  /**
   * Update the markers and styles
   */
  fb.updateDisplay = function () {
    // Markers
    var angle = fb.hsl[0] * 6.28;
    $('.h-marker', e).css({
      left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',
      top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'
    });

    $('.sl-marker', e).css({
      left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',
      top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'
    });

    // Saturation/Luminance gradient
    $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));

    // Linked elements or callback
    if (typeof fb.callback == 'object') {
      // Set background/foreground color
      $(fb.callback).css({
        backgroundColor: fb.color,
        color: fb.hsl[2] > 0.5 ? '#000' : '#fff'
      });
	  setThemeColor();
      // Change linked value
      $(fb.callback).each(function() {
       // if (this.value && this.value != fb.color) {
          this.value = fb.color;
       // }
	   return true;
      });
    }
    else if (typeof fb.callback == 'function') {
      fb.callback.call(fb, fb.color);
    }
  }

  /**
   * Get absolute position of element
   */
  fb.absolutePosition = function (el) {
    var r = { x: el.offsetLeft, y: el.offsetTop };
    // Resolve relative to offsetParent
    if (el.offsetParent) {
      var tmp = fb.absolutePosition(el.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
  };

  /* Various color utility functions */
  fb.pack = function (rgb) {
    var r = Math.round(rgb[0] * 255);
    var g = Math.round(rgb[1] * 255);
    var b = Math.round(rgb[2] * 255);
    return '#' + (r < 16 ? '0' : '') + r.toString(16) +
           (g < 16 ? '0' : '') + g.toString(16) +
           (b < 16 ? '0' : '') + b.toString(16);
  }

  fb.unpack = function (color) {
    if (color.length == 7) {
      return [parseInt('0x' + color.substring(1, 3)) / 255,
        parseInt('0x' + color.substring(3, 5)) / 255,
        parseInt('0x' + color.substring(5, 7)) / 255];
    }
    else if (color.length == 4) {
      return [parseInt('0x' + color.substring(1, 2)) / 15,
        parseInt('0x' + color.substring(2, 3)) / 15,
        parseInt('0x' + color.substring(3, 4)) / 15];
    }
  }

  fb.HSLToRGB = function (hsl) {
    var m1, m2, r, g, b;
    var h = hsl[0], s = hsl[1], l = hsl[2];
    m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
    m1 = l * 2 - m2;
    return [this.hueToRGB(m1, m2, h+0.33333),
        this.hueToRGB(m1, m2, h),
        this.hueToRGB(m1, m2, h-0.33333)];
  }

  fb.hueToRGB = function (m1, m2, h) {
    h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
    if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
    if (h * 2 < 1) return m2;
    if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
    return m1;
  }

  fb.RGBToHSL = function (rgb) {
    var min, max, delta, h, s, l;
    var r = rgb[0], g = rgb[1], b = rgb[2];
    min = Math.min(r, Math.min(g, b));
    max = Math.max(r, Math.max(g, b));
    delta = max - min;
    l = (min + max) / 2;
    s = 0;
    if (l > 0 && l < 1) {
      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
    }
    h = 0;
    if (delta > 0) {
      if (max == r && max != g) h += (g - b) / delta;
      if (max == g && max != b) h += (2 + (b - r) / delta);
      if (max == b && max != r) h += (4 + (r - g) / delta);
      h /= 6;
    }
    return [h, s, l];
  }

  // Install mousedown handler (the others are set on the document on-demand)
  $('*', e).mousedown(fb.mousedown);

    // Init color
  fb.setColor('#ffffff');

  // Set linked elements/callback
  if (callback) {
    fb.linkTo(callback);
  }
}