window.addEvent("load", function(){
    
    $$("input.textfieldcolourpicker").each(function(el){
        new MooRainbow('sxColourPicker_' + el.id, {
            'startColor': [255, 255, 255],
            'onChange': function(color) {
                el.value = color.hex;
            }
        });
    });
    
    $$("form .fieldwrapper").each(function(el){
        initializeField(el.id.substr( el.id.indexOf( '_' ) + 1, el.id.length - 1 ));
    });
    
    $$('.sxVolatile').each(function(el){
        el.addEvent("focus", function(){
            if (el.value == el.getProperty("title")){
                el.value='';
            }
        });
    });
  
    $$(".sxWildCards").each(function(el){
        function toggleWildCards() {
            var fieldID = el.id.substr( 0, el.id.indexOf( '_' ) );
            $$("select[name=" + fieldID +"]").each(function(el){
                el.disabled = el.disabled == '' ? 'disabled' : ''; 
            });
        }
        el.addEvent("click", toggleWildCards);
        if (el.checked){toggleWildCards()};
    });
    
    $$(".checklistinput").each(function(el){
        
        var fieldID = el.id.substr( 15 );

        $("additem_" + fieldID).addEvent("click", function(e){
            new Event(e).stop();
            addToCheckList($( "addvalue_" + fieldID ).value, $( "addvalue_" + fieldID ).value, fieldID);
            $( "addvalue_" + fieldID ).value = $( "addvalue_" + fieldID ).getProperty("title");
        });
        
        $("checklist_" + fieldID).getElements("input.removeIcon").each(function(el){
            initializeCheckListRemove(el);
        });
        
    });
    
    $$(".iCal").each(function(el){
        var fieldID = el.id.substr( 5 );
        var myCal = new MooCal(fieldID);
    	el.addEvent("click", function(e){
    		var event = new Event(e).stop();
    		var x = event.page.x;
    		var y = event.page.y;
    		myCal.show(x,y);
    	});
    });
    
    $$('.checklistautocomplete').each(function(el){
        var checklistID = el.id.substr(el.id.indexOf("_") + 1);
        new MysticMeg("autocomplete_" + checklistID, { topOffset: 20, leftOffset: -8, onSelect: checklistAutoCompleteSelect, onSuccess: checklistAutoCompleteSuccess });
        $("checklist_" + checklistID).getElements("input.removeIcon").each(function(el){
            initializeCheckListRemove(el);
        });
    });
	
});  		

/* Check List Functions */
function addToCheckList( addValue, addText, fieldID ) {
	var newOptionID = ( $("checklist_" + fieldID).getChildren().length + 1 );
	var newOption = new Element("div", {"class" : "option", "id" : fieldID + "_" + newOptionID});
	var newInput = new Element("input", {
        "type" : "hidden", 
        "id" : fieldID + "_" + newOptionID, 
        "name" : fieldID,
        "value" : addValue
    });
	newOption.appendChild( newInput );
	var newRemoveIcon = new Element("input", {
        "type" : "image", 
        "id" : "removeitem_" + fieldID + "_" + newOptionID, 
        "src" : "/edit/_images/icons/famfam/bin.png",
        "alt" : "Remove",
        "class" : "removeIcon"
    });
	newOption.appendChild( newRemoveIcon );
	var newLabel = new Element("label", {'for' : fieldID + '_' + newOptionID});
	newLabel.setHTML(addText);
	newOption.appendChild(newLabel);
	$("checklist_" + fieldID).appendChild(newOption);
	initializeCheckListRemove(newRemoveIcon);
}

function checklistAutoCompleteSuccess( oResults, inputElement ){
	oResults.each(function(oResult){
        
        var fieldID = $(inputElement).id.substr($(inputElement).id.indexOf("_") + 1);
        var resultItem = $('autocompleteresult_' + inputElement + '_' + oResult.id);
        if ( !$('checklistautocomplete_' + fieldID).hasClass("acMultiSelect") ) {
            
            $$('input[name="' + fieldID + '"]').each(function(el){
                if ( el.value == oResult.id ) {
                    resultItem.addClass('disabled');
                } 
            });
        }
    });	
}

function checklistAutoCompleteSelect(oSelected, inputElement){
    var fieldID = $(inputElement).id.substr($(inputElement).id.indexOf("_") + 1);
    var resultItem = $('autocompleteresult_' + inputElement + '_' + oSelected.id);
    var boolAllowedToAdd = true;
    if ( !$('checklistautocomplete_' + fieldID).hasClass("acMultiSelect") ) {
        resultItem.addClass('disabled');
        $$('input[name="' + fieldID + '"]').each(function(el){
            if ( el.value == oSelected.id ) {
                boolAllowedToAdd  = false;
            } 
        });
    }
    if( boolAllowedToAdd ) { addToCheckList( oSelected.id, oSelected.value, inputElement.substr(inputElement.indexOf('_') + 1))};
}

function initializeCheckListRemove(el){
    el.addEvent("click", function(e){
        var fieldID = el.id.substr(11).substr(0, el.id.substr(11).indexOf("_"));
        new Event(e).stop();
        $(fieldID + "_" + el.id.substr(11).substr(fieldID.length + 1)).remove();
    });
}
