/* redMine - project management software
   Copyright (C) 2006-2008  Jean-Philippe Lang */

function checkAll (id, checked) {
	var els = Element.descendants(id);
	for (var i = 0; i < els.length; i++) {
    if (els[i].disabled==false) {
      els[i].checked = checked;
    }
	}
}

var fileFieldCount = 1;

function addFileField() {
    if (fileFieldCount >= 10) return false
    fileFieldCount++;
    var f = document.createElement("input");
    f.type = "file";
    f.name = "attachments[" + fileFieldCount + "][file]";
    f.size = 30;
    var d = document.createElement("input");
    d.type = "text";
    d.name = "attachments[" + fileFieldCount + "][description]";
    d.size = 60;
    
    p = document.getElementById("attachments_fields");
    p.appendChild(document.createElement("br"));
    p.appendChild(f);
    p.appendChild(d);
}

function showTab(name) {
    var f = $$('div#content .tab-content');
	for(var i=0; i<f.length; i++){
		Element.hide(f[i]);
	}
    var f = $$('div.tabs a');
	for(var i=0; i<f.length; i++){
		Element.removeClassName(f[i], "selected");
	}
	Element.show('tab-content-' + name);
	Element.addClassName('tab-' + name, "selected");
	return false;
}

function setPredecessorFieldsVisibility() {
    relationType = $('relation_relation_type');
    if (relationType && relationType.value == "precedes") {
        Element.show('predecessor_fields');
    } else {
        Element.hide('predecessor_fields');
    }
}

//function promptToRemote(text, param, url) {
//    value = prompt(text + ':');
//    if (value) {
//        new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
//        return false;
//    }
//}

function collapseScmEntry(id) {
    var els = document.getElementsByClassName(id, 'browser');
	for (var i = 0; i < els.length; i++) {
	   if (els[i].hasClassName('open')) {
	       collapseScmEntry(els[i].id);
	   }
       Element.hide(els[i]);
    }
    $(id).removeClassName('open');
}

function expandScmEntry(id) {
    var els = document.getElementsByClassName(id, 'browser');
	for (var i = 0; i < els.length; i++) {
       Element.show(els[i]);
       if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
            expandScmEntry(els[i].id);
       }
    }
    $(id).addClassName('open');
}

function scmEntryClick(id) {
    el = $(id);
    if (el.hasClassName('open')) {
        collapseScmEntry(id);
        el.addClassName('collapsed');
        return false;
    } else if (el.hasClassName('loaded')) {
        expandScmEntry(id);
        el.removeClassName('collapsed');
        return false;
    }
    if (el.hasClassName('loading')) {
        return false;
    }
    el.addClassName('loading');
    return true;
}

function scmEntryLoaded(id) {
    Element.addClassName(id, 'open');
    Element.addClassName(id, 'loaded');
    Element.removeClassName(id, 'loading');
}

/* shows and hides ajax indicator */
//Ajax.Responders.register({
//    onCreate: function(){
//        if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
//            Element.show('ajax-indicator');
//        }
//    },
//    onComplete: function(){
//        if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
//            Element.hide('ajax-indicator');
//        }
//    }
//});

//Object.extend(Element, { 
//   
//  // Toggle the visibility of two elements in sync
//  // Good for hiding one element in the precense of another
//  togglePair: function(element1, element2) {
//    Element.toggle(element1);
//    Element.toggle(element2);
//  }
//});

/* PLACEHOLDER ATTRIBUTES */

function placeholderFocus() {
 if (!this.is_focused){
 this.is_focused = 1;
 this.value = '';
 this.style.color = '#000';
 var rs = this.getAttribute("radioselect");
 if (rs && rs != ""){
 var re = $(rs);
 if (!re)
 return;
 if (re.type!='radio')
 return;
 re.checked=true;
 }
 }
}

function placeholderBlur() {
 var ph = this.getAttribute("placeholder")
 if (this.is_focused && ph && this.value == "") {
 this.is_focused = 0;
 this.value = ph;
 this.style.color = '#777';
 }
}

function placeholderSetup(id) {
 var el = $(id);
 if (!el)
 return;
 var ph = el.getAttribute("placeholder");
 if (ph && ph != "" && (el.value == "" || el.value == ph)){
 el.value = ph;
 el.style.color = '#777';
 el.is_focused = 0;
 el.onfocus = placeholderFocus;
 el.onblur = placeholderBlur;
 }
}


/* select unselect all */
function boxSelection(el) {
	el.checked = true;
	el.up('tr').addClassName('context-menu-selection');
}

function removeBoxSelection(el) {
	el.checked = false;
	el.up('tr').removeClassName('context-menu-selection');
}

function toggleBoxSelection(el) { 
	if (el.checked == false)  { 
		removeBoxSelection(el)
	}else { 
		boxSelection(el)
	}
}

function toggleSelection(el) {
        var boxes = el.getElementsBySelector('input[type=checkbox]');
        var all_checked = true;
        for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
        for (i = 0; i < boxes.length; i++) {
                if (all_checked) {
                        //boxes[i].checked = false;
                        //boxes[i].up('tr').removeClassName('context-menu-selection');
                        removeBoxSelection(boxes[i])
                } else {
                        //boxes[i].checked = true;
                        //boxes[i].up('tr').addClassName('context-menu-selection');
                        boxSelection(boxes[i])
                }
        }
}


