function chooseColor(param_name) {
    var picker = WdS_color_pickers[param_name];
    if(picker) { 
        picker.toggle();
    }
}

var WdS_generate_code = function() {
    var total_vars = WdS_vars.length;
    var flashvars = '';
    var root_height = APP_WIDGET_HEIGHT;
    var root_width = APP_WIDGET_WIDTH;
    for(var i=0;i<total_vars;i++) {
        var d = WdS_vars[i];
	var value = null;
        var el = $('id-'+d[0]);
        if(el) {
            if(d[1] == 'boolean') {
                value = el.checked ? d[4] : d[3];
            } else {
                value = el.value;
	    }
        }
        if(d[0] == 'root_height') {
	    if(value==null) {
		value = root_height
	    } else {
		root_height = value;
	    }
        } else if(d[0] == 'root_width') {
	    if(value==null) {
		value = root_width;
            } else {
                root_width = value;
	    }
        }
        flashvars = flashvars + '&amp;' + d[0] + '=' + value;
    }
    WdS_generated_code = '<embed allowscriptaccess="always" allownetworking="external" id="flashcontrolemb" name="flashcontrol" '+
        'pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://' +
        APP_URL + APP_WIDGET_URL + '" height="'+
        root_height + '" width="'+ root_width +
        '" flashvars="propertyOwnerID=' + APP_USER_ID +
	    (APP_CALENDAR_ID ? '&amp;propertyID=' + APP_CALENDAR_ID : '') +
	    flashvars + '" wmode="transparent" />';
    // Wrap <EMBED> into <OBJECT>
    WdS_generated_code = '<object id="flashcontrol" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,5,0,0" height="'+root_height+'" width="'+root_width+'">' +
	    '<param name="flashvars" value="propertyOwnerID=' + APP_USER_ID +
		    (APP_CALENDAR_ID ? '&amp;propertyID=' + APP_CALENDAR_ID : '') +
		    flashvars + '" />' +
	    '<param name="src" value="http://'+APP_URL + APP_WIDGET_URL+'" />'+
	    '<param name="wmode" value="transparent" />'+
    	    '<param name="allowscriptaccess" value="always" />'+
            '<param name="allownetworking" value="external" />'+
	    WdS_generated_code +
	    '</object>';
    var rotated_link = '';
    if(LINK_ROTATOR.length) {
	var ind = Math.round(Math.random()*(LINK_ROTATOR.length-1));
	rotated_link = '<a href="'+LINK_ROTATOR[ind].link+'">' + LINK_ROTATOR[ind].title + '</a> | ';
    }
    rotated_link += '<a href="'+ LINK_URL +'">'+LINK_TITLE+'</a>';
    // Wrap code into div with link rotator
    WdS_generated_code = '<div style="width:'+root_width+'px">' +
        WdS_generated_code +
        '<div style="padding:5px 20px 0px;text-align:center;">'+
        '<p style="font-family:Arial,sans-serif;font-size:10px;margin:15px 10px;padding:0px;">' + rotated_link + '</p>'+ 
        '</div></div>';
    var flashpreview = document.getElementById('flashobj');
    if(flashpreview) {
        flashpreview.style.width = root_width+'px';
        flashpreview.style.height = root_height+'px';
    }
    var rpreview = document.getElementById('rotator-preview');
    if(rpreview) {
        rpreview.style.width = root_width+'px';
        rpreview.innerHTML = rotated_link;
    }
    document.getElementById('code-area').value = WdS_generated_code;
    jQuery('#copybtn').html("<object width='60' height='20'><PARAM NAME=FlashVars VALUE='txtToCopy=" + encodeURIComponent(WdS_generated_code) + "&js=select_code()'><param name='movie' value='/flash/copybutton.swf'><embed src='/flash/copybutton.swf' flashvars='txtToCopy=" + encodeURIComponent(WdS_generated_code) + "&js=select_code()' width='60' height='20'></embed></object>");
}
var WdS_color_pickers = {};
var WdS_sliders = {};
var WdS_flex = null;
var WdS_re_only_digits = new RegExp('[^0-9]+', 'g');
var WdS_re_only_hexdigits = new RegExp('[^0-9A-F]+', 'gi');
var WdS_set_param = function(param, value) {
    var t = param.substr(0,1).toUpperCase() + param.substr(1);
    if(WdS_flex) {
        var eval_str = 'WdS_flex.set' + t + '(' + value + ')';
        eval(eval_str);
        if(t == 'Root_width') {
            $('flashobj').style.width = value + 'px';
        } else if(t == 'Root_height') {
            $('flashobj').style.height = value + 'px';
        }
        WdS_flex.applyStyles();
    }
    WdS_generate_code();
}

function init_page() {
    WdS_flex = FABridge.mybridge.root();
    var total_vars = WdS_vars.length;
    for(var i=0;i<total_vars;i++) {
        var d = WdS_vars[i];
        var el = $('id-'+d[0]);
        if(el) {
            if(d[1] == 'select') {
                el.addEvent('blur', function(e) { e = new Event(e);
                    WdS_set_param(e.target.name, e.target.options[e.target.selectedIndex].value);
                })
            } else if(d[1] == 'number') {
                if(d.length >= 5) {
                    WdS_sliders[d[0]] = new Slider($('sarea-'+d[0]), $('sknob-'+d[0]), {
                        steps: d[4]-d[3],
                        mode: 'horizontal',
                        minValue: d[3],
                        paramName: d[0],
                        onComplete: function(val) {
                            var el = $('id-' + this.options.paramName);
                            if(el) {
                                el.value = parseInt(val) + this.options.minValue;
                                WdS_set_param(this.options.paramName, el.value);
                            }
                        }
                    });
                    WdS_sliders[d[0]].set(d[2]-d[3]);
                }
                el.value = d[2];
                el.addEvent('change', function(e) { e = new Event(e);
                    e.target.value = e.target.value.replace(WdS_re_only_digits, '');
                    WdS_set_param(e.target.name, e.target.value);
                    if(WdS_sliders[e.target.name]) {
                        WdS_sliders[e.target.name].set(e.target.value - WdS_sliders[e.target.name].options.minValue);
                    }
                })
            } else if(d[1] == 'color') {
                WdS_color_pickers[d[0]] = new MooRainbow(el.id, {
                    id: d[0] + '-color-picker',
                    wheel: true,
                    prefix: 'moorsmall-',
                    startColor: eval('[0x'+d[2].substr(0,2)+',0x'+d[2].substr(2,2)+',0x'+d[2].substr(4,2)+']'),
                    imgPath: '/app/webroot/images/mooRainbow/',
                    onComplete: function(color) {
                       this.element.value = color.hex.substr(1);
                       WdS_set_param(this.element.name, '0x'+this.element.value);
                    }
                });
                el.value = d[2];
                el.addEvent('keyup', function(e) { e = new Event(e);
                    e.target.value = e.target.value.replace(WdS_re_only_hexdigits, '');
                    WdS_set_param(e.target.name, '0x' + e.target.value);
                })
            }
        }
    }
    WdS_generate_code();
    WdS_set_param("cell_color_serv", '0x' + WdS_vars[4][2]); 	

   
}

window.addEvent('domready', function() {
    FABridge.addInitializationCallback("mybridge", init_page);
});

jQuery(document).ready(function(){
    
    jQuery("#savesettings").bind("click", function(e){
     

      jQuery(this).parents("form:first").ajaxSubmit({
       success: function(responseText, responseCode) {

        if (responseText == "OK") 
        {
         msg = "Settings Saved."
        }
        else
        {
         msg = "Save Settings Failed."
        }

	jQuery('#ajax-save-message').hide().html(msg).fadeIn();
        setTimeout(function(){
  	 jQuery('#ajax-save-message').fadeOut();
        }, 3000);
	
       }
	
      });
   
     return false;

    });

      




    jQuery("#restoresettings").bind("click", function(e){
  

      jQuery('#id-root_height').val(400); 	
      jQuery('#id-daysN').val(35);	
      jQuery('#id-row_number').val(5);	
      jQuery('#id-cell_color_serv').val("a20000");	
      jQuery('#id-name_col_width').val(150);	
      jQuery('id-labels_font_size').val(12);	  

      jQuery(this).parents("form:first").ajaxSubmit({
       success: function(responseText, responseCode) {
	
        if (responseText == "OK") 
        {
         msg = "Settings Restored."
        }
        else
        {
         msg = "Settings Restore Failed."
        }
 

	WdS_vars = [
	    ['root_width',       'number', 700,	670, 1000 ],
    	    ['root_height',      'number', 400,	180, 700 ],
	    ['daysN',            'number', 35, 7, 100 ],
	    ['row_number',       'number', 5, 1,   25  ],
	    ['cell_color_serv',  'color',  'a20000'  ],
	    ['name_col_width',   'number', 150, 130, 450 ],
	    ['labels_font_size', 'number', 12, 4,   25  ]
	];
	
	init_page();
	WdS_set_param("cell_color_serv", '0xa20000');	

	jQuery('#ajax-restore-message').hide().html(msg).fadeIn();
        setTimeout(function(){
  	 jQuery('#ajax-restore-message').fadeOut();
        }, 4000);

       }

      });

    return false;

    });
});


function copy_to_clipboard(text) {
    if(window.clipboardData) {
	window.clipboardData.setData('text',text);
    } else {
	var clipboarddiv=document.getElementById('divclipboardswf');
	if(clipboarddiv==null) {
	    clipboarddiv=document.createElement('div');
	    clipboarddiv.setAttribute("name", "divclipboardswf");
	    clipboarddiv.setAttribute("id", "divclipboardswf");
	    document.body.appendChild(clipboarddiv);
	}
	clipboarddiv.innerHTML='<embed src="/app/webroot/flash/clipboard.swf" FlashVars="clipboard='+
	encodeURIComponent(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    }
    return false;
}
 
function select_and_copy(id){
    var textarea = document.getElementById(id);
    textarea.select();
    return copy_to_clipboard(textarea.value);
}

function select_text(id)
{
  var textarea = document.getElementById(id);
  textarea.select();
}
function select_code()
{
  var textarea = document.getElementById('code-area');
  textarea.select();
}

