// edit.js
// Author: Dimitar Indovski
// Version: 1.0.1
// Last modified: 2007-11-02
// Change Log: 
//   1. implementacija na publish_on_save_chk (checkbox) vo publishSubmit()
//   2. funkcii showRelation(), hideRelation(), loadRelation()
//  
// Dependancy: edit.xsl ver.1.0.5


  var categories_changed = 0;
  var page_edit = 0;
  var form_edit = 0;
  var rich_edit = 0;
  var tree_edit = 0;
  var template_edit = 0;

// ============================ Change PRIVILEGE ===============================
  function changePrivilege() {
    var selPriv = document.getElementById("save:privilege_set").selectedIndex;
    if (selPriv == 0) {
      document.getElementById('custom_privs').style.display = '';
    } else {
      document.getElementById('custom_privs').style.display = 'none';
    }
  }


// ============================= Select CATEGORY ===============================
  function selectCategory() {
    categories_changed = 1;
    cat_sel = document.getElementById('cat_sel');
    doc_cat_sel = document.getElementById('doc_cat_sel');
    doc_cat_sel.options.length=0;
    if (cat_sel.selectedIndex >= 0)
      for(var i = cat_sel.selectedIndex; i < cat_sel.options.length; i++) {
        if(cat_sel.options[i].selected) {
          doc_cat_sel.options.length++;
          doc_cat_sel.options[doc_cat_sel.options.length-1].value = cat_sel.options[i].value;
          doc_cat_sel.options[doc_cat_sel.options.length-1].text = cat_sel.options[i].text;
        }
      }

  }

  function mypopUpCalendar(button_ctl, text_ctl, date_format) {
		var	leftpos=0;
  	var aTag = button_ctl;
		do {
			aTag = aTag.offsetParent;
			leftpos	+= aTag.offsetLeft;
		} while(aTag.tagName!="BODY");
		fixedX = leftpos-150;
    popUpCalendar(button_ctl, text_ctl, date_format);
    fixedX = -1;
  }

  function loadCategories(doc_cat_text_value) {
    var doc_cat_array = doc_cat_text_value.split(",");
    for (var j = 0; j < doc_cat_array.length; j++) {
      cat_name = doc_cat_array[j];
      if (cat_name != '') {
        for(var i = 0; i < dCatTree.aNodes.length; i++) {
          if (dCatTree.aNodes[i].title == cat_name) {
            if (document.getElementById('chkdCatTree'+i)) {
              document.getElementById('chkdCatTree'+i).checked = true;
            } else {
              document.getElementById('chkdCatTree'+i).checked = false;
            }
          }
        }
      }
    }
    hideCategories();
  }

// ============================== Show VERSIONS ================================
  function showVersions(ctl) {
    if (document.getElementById('ver_div').style.display == 'none') {
    	var	fixedX = -1			// x position (-1 if to appear below control)
    	var	fixedY = -1			// y position (-1 if to appear below control)
  		var	leftpos=0
	  	var	toppos=0

  		aTag = ctl
			do {
				aTag = aTag.offsetParent;
				leftpos	+= aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");

    	document.getElementById('ver_div').style.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX
        document.getElementById('ver_div').style.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight  :	fixedY
        document.getElementById('ver_div').style.display = '';
    } else {
        document.getElementById('ver_div').style.display = 'none';
    }
  }


// ============================= Show CATEGORIES ===============================
  function showCategories(ctl) {
    categories_changed = 1;
    if (document.getElementById('cat_div1').style.display == 'none') {
    	var	fixedX = -1			// x position (-1 if to appear below control)
    	var	fixedY = -1			// y position (-1 if to appear below control)
  		var	leftpos=0
	  	var	toppos=0

  		aTag = ctl
			do {
				aTag = aTag.offsetParent;
				leftpos	+= aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");

    	document.getElementById('cat_div1').style.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX
        document.getElementById('cat_div1').style.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY
        document.getElementById('cat_div1').style.display = '';

 	  } else {
 	    hideCategories();
 	  }
  }

  function hideCategories() {
    document.getElementById('cat_div1').style.display = 'none';
    var doc_cat_text_value = '';
    var first = 1;
    for(var i = 0; i < dCatTree.aNodes.length; i++) {
      if (document.getElementById('chkdCatTree'+i)) {
        if (document.getElementById('chkdCatTree'+i).checked) {
          if (first) {
            doc_cat_text_value = dCatTree.aNodes[i].name;
            first = 0;
          } else {
            doc_cat_text_value += ', ' + dCatTree.aNodes[i].name;
          }
        }
      }
    }
    document.getElementById('doc_cat_text').value = doc_cat_text_value;

  }


// ================================= RELATIONS ==================================
  function showRelation(ctl, relation) {
    categories_changed = 1;
    if (document.getElementById('div_'+relation).style.display == 'none') {
    	var	fixedX = -1			// x position (-1 if to appear below control)
    	var	fixedY = -1			// y position (-1 if to appear below control)
  		var	leftpos=0
	  	var	toppos=0

  		aTag = ctl
			do {
				aTag = aTag.offsetParent;
				leftpos	+= aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");

    	document.getElementById('div_'+relation).style.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX
      document.getElementById('div_'+relation).style.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY
      document.getElementById('div_'+relation).style.display = '';

 	  } else {
 	    hideRelation(relation);
 	  }
  }

  function hideRelation(relation) {
    document.getElementById('div_'+relation).style.display = 'none';
    var doc_rel_text_value = '';
    var first = 1;
    for(var i = 0; i < eval("dTree_" + relation + ".aNodes.length"); i++) {
      if (document.getElementById('chkdTree_' + relation + '' + i)) {
        if (document.getElementById('chkdTree_' + relation + '' + i).checked) {
          if (first) {
            doc_rel_text_value = eval("dTree_" + relation + ".aNodes[i].title");
            first = 0;
          } else {
            doc_rel_text_value += ',' + eval("dTree_" + relation + ".aNodes[i].title");
          }
        }
      }
    }
    document.getElementById('relations:'+relation).value = doc_rel_text_value;
  }

  function loadRelation(relation) {
  	var doc_rel_text_value = document.getElementById('relations:'+relation).value;
    var doc_rel_array = doc_rel_text_value.split(",");
    for (var j = 0; j < doc_rel_array.length; j++) {
      rel_name = doc_rel_array[j];
      if (rel_name != '') {
        for(var i = 0; i < eval("dTree_" + relation + ".aNodes.length"); i++) {
          if (eval("dTree_" + relation + ".aNodes[i].title") == rel_name) {
            if (document.getElementById('chkdTree_' + relation + '' + i)) {
              document.getElementById('chkdTree_' + relation + '' + i).checked = true;
            } else {
              document.getElementById('chkdTree_' + relation + '' + i).checked = false;
            }
          }
        }
      }
    }
    hideRelation(relation);
  }
// =============================== END RELATIONS ===============================


// ================================== PUBLISH ==================================
  function publish() {
    if (document.getElementById('publish_checkbox').checked) {
      document.getElementById('publish_on_img').removeAttribute('disabled');
      document.getElementById('expire_checkbox').removeAttribute('disabled');
      document.getElementById('save:republish').removeAttribute('disabled');
      document.getElementById('save:valid_from').disabled = null;
      if (document.getElementById('save:valid_from').value == '') {
        var date1 = new Date();
        document.getElementById('save:valid_from').value = date1.getYear()+"-"+date1.getMonth()+"-"+date1.getDate();
      }

    } else {
      document.getElementById('publish_on_img').setAttribute('disabled', 'true', 0);
      document.getElementById('expire_checkbox').setAttribute('disabled', 'true', 0);
      document.getElementById('save:republish').setAttribute('disabled', 'true', 0);
      document.getElementById('save:republish').checked = null;
      document.getElementById('save:valid_from').setAttribute('disabled', 'true', 0);
      document.getElementById('save:valid_from').value = ''; //now()
      document.getElementById('expire_checkbox').checked = null;
    }
    expire();
  }


// ================================== EXPIRE ===================================
  function expire() {
    if (document.getElementById('expire_checkbox').checked) {
      document.getElementById('expire_on_img').removeAttribute('disabled');
      document.getElementById('save:expire_on').removeAttribute('disabled');
      if (document.getElementById('save:expire_on').value == '') {
        document.getElementById('save:expire_on').value = document.getElementById('save:valid_from').value;
      }
    } else {
      document.getElementById('expire_on_img').setAttribute('disabled', 'true', 0);
      document.getElementById('save:expire_on').setAttribute('disabled', 'true', 0);
      document.getElementById('save:expire_on').value = '';
    }
  }


// ================================== SUBMIT ===================================
  function submitForm() {

	// ako se disabled, togas vo php nema da postojat promenlivite i nema da se promenat
    document.getElementById('save:valid_from').disabled = null;
    document.getElementById('save:expire_on').disabled = null;

    if (grant_priv==1) {
      if (!(document.getElementById('save:owner_read').checked)) {
        document.getElementById('save:owner_read').checked = 1;
        document.getElementById('save:owner_read').value = 0;
      }
      if (!(document.getElementById('save:owner_write').checked)) {
        document.getElementById('save:owner_write').checked = 1;
        document.getElementById('save:owner_write').value = 0;
      }
      if (!(document.getElementById('save:owner_grant').checked)) {
        document.getElementById('save:owner_grant').checked = 1;
        document.getElementById('save:owner_grant').value = 0;
      }
      if (!(document.getElementById('save:owner_publish').checked)) {
        document.getElementById('save:owner_publish').checked = 1;
        document.getElementById('save:owner_publish').value = 0;
      }
      if (!(document.getElementById('save:owngroup_read').checked)) {
        document.getElementById('save:owngroup_read').checked = 1;
        document.getElementById('save:owngroup_read').value = 0;
      }
      if (!(document.getElementById('save:owngroup_write').checked)) {
        document.getElementById('save:owngroup_write').checked = 1;
        document.getElementById('save:owngroup_write').value = 0;
      }
      if (!(document.getElementById('save:owngroup_grant').checked)) {
        document.getElementById('save:owngroup_grant').checked = 1;
        document.getElementById('save:owngroup_grant').value = 0;
      }
      if (!(document.getElementById('save:owngroup_publish').checked)) {
        document.getElementById('save:owngroup_publish').checked = 1;
        document.getElementById('save:owngroup_publish').value = 0;
      }
      if (!(document.getElementById('save:other_read').checked)) {
        document.getElementById('save:other_read').checked = 1;
        document.getElementById('save:other_read').value = 0;
      }
      if (!(document.getElementById('save:other_write').checked)) {
        document.getElementById('save:other_write').checked = 1;
        document.getElementById('save:other_write').value = 0;
      }
      if (!(document.getElementById('save:other_grant').checked)) {
        document.getElementById('save:other_grant').checked = 1;
        document.getElementById('save:other_grant').value = 0;
      }
      if (!(document.getElementById('save:other_publish').checked)) {
        document.getElementById('save:other_publish').checked = 1;
        document.getElementById('save:other_publish').value = 0;
      }
    }

    if (categories_changed) {
      var doc_cats = '';
      var first = 1;
      for(var i = 0; i < dCatTree.aNodes.length; i++) {
        if (document.getElementById('chkdCatTree'+i)) {
          if (document.getElementById('chkdCatTree'+i).checked) {
            if (first) {
              doc_cats = dCatTree.aNodes[i].title;
              first = 0;
            } else {
              doc_cats += ',' + dCatTree.aNodes[i].title;
            }
          }
        }
      }
      document.getElementById('save:categories').value = doc_cats;
    };
  	if (rich_edit) updateRTEs();
  	if (form_edit) {
      document.getElementById('save:xml/fields').value = generate_fields('form_edit_rte');
      document.getElementById('save:xml/data_source').value = generate_data_source();
      document.getElementById('save:xml/edit_xsl').value = generate_edit_xsl('form_edit_rte');
      document.getElementById('save:xml/open_xsl').value = generate_open_xsl('template_edit_rte');
  	}
  	if (template_edit) {
      document.getElementById('save:xml/xsl').value = generate_open_xsl('template_edit_rte');
  	}
   	if (page_edit) {
      document.getElementById('save:xml/body').value = generate_open_xsl('page_edit_rte');
   	}
  }

  function publishSubmit() {
    if (document.getElementById('publish_on_save_chk').checked) {
	    if (document.getElementById('publish_checkbox').checked) {
	      document.getElementById("save:republish").checked = 1;
	    } else {
	      document.getElementById('publish_checkbox').checked = 1;
	      publish();
	    }
	  }
    submitForm();
    document.documents_form.submit();
  }

