if (document.getElementById && document.getElementsByTagName && document.createTextNode) {
    document.write('<link rel="stylesheet" type="text/css" href="/style/js_hide.css" />');
    window.onload = init;
}

function init(){
    initShowHide();
    if (document.getElementById('privacy_group_id')){
        getTemplates(document.getElementById('privacy_group_id'));
    }
}

function initShowHide () {
    if (document.getElementById('privacy_group_id')){
        parseTags(document.getElementById('privacy_group_id'));
    }
    if (document.getElementById('t_users')){
        if (getQueryVariable('t_section')){
            showdiv(getQueryVariable('t_section'));
        } else {
            showdiv('t_users');
        }
    }
}

var divs = [['t_users', 't_tags', 't_privacy_groups', 't_settings', 't_templates']];
   


function showSoloDiv(id) {
    var arr = findArray(id);
    if (arr){ 
        for (var i=0; i<arr.length;i++){
            hidediv(arr[i]);
        }
        showdiv(id);
    }
}

function findArray (id) {
    for (var i=0; i<divs.length; i++){
        var arr = divs[i].slice(0);
        for(var j=0; j<arr.length; j++){
            if (arr[j] == id){
                return arr;
            }
        }
    }
    return 'not found';
}
function hidediv(id) {
    //safe function to hide an element with a specified id
    if (document.getElementById) { // DOM3 = IE5, NS6
        if( document.getElementById(id)){
            document.getElementById(id).style.display = 'none';
        }
    }
    else {
        if (document.layers) { // Netscape 4
            document.id.display = 'none';
        }
        else { // IE 4
            document.all.id.style.display = 'none';
        }
    }
}

function showdiv(id) {
    //safe function to show an element with a specified id
          
    if (document.getElementById) { // DOM3 = IE5, NS6
        if (document.getElementById(id)){
            document.getElementById(id).style.display = 'block';
        }
    }
    else {
        if (document.layers) { // Netscape 4
            document.id.display = 'block';
        }
        else { // IE 4
            document.all.id.style.display = 'block';
        }
    }
}

function toggle(id) {
    if (document.getElementById(id).style.display == 'block'){
        hidediv(id);
    } else {
        showdiv(id);
    }
}
    
function parseTags(ob) {

    values = ob.options[ob.selectedIndex].value.split("|");

    tags    = values[0];
    value   = values[1];

    if (tags=='y') {
        showdiv('tagselect')   
        showdiv('taglabel')   
    } else {
        hidediv('tagselect')
        hidediv('taglabel')
    }
}

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
}

function get_ajax_object()
{
  var xmlHttp;

  var browser= navigator.appName;
  if (browser == "Microsoft Internet Explorer"){
        xmlHttp=new ActiveXObject("MICROSOFT.XMLHTTP");
  } else {
    xmlHttp=new XMLHttpRequest();
  }
  return xmlHttp;
}

function pg_change(ob){
    parseTags(ob);
    getTemplates(ob);
}
function getTemplates(ob){
    values = ob.options[ob.selectedIndex].value.split("|");

    tags    = values[0];
    value   = values[1];
    xmlHttp = get_ajax_object();
    if (xmlHttp==null){
        alert ("Your browser does not support Ajax");
        return;
    }
    
    var url = "/ajax_get_templates.php";
    url = url + "?pg=" + value;

    if (document.getElementById("section")){
        url = url + "&section=" + document.getElementById("section").value;
    }

    url = url + "&sid=" + Math.random();

    xmlHttp.onreadystatechange=updateTemplates;
    xmlHttp.open("GET",url, true);
    xmlHttp.send(null)
}
 
function updateTemplates(){
    if (xmlHttp.readyState == 4 || xmlHttp.readyState=="complete"){
        xmlDoc=xmlHttp.responseXML;
        var select = document.getElementById('template');
        select.options.length = 1;
        //console.log(xmlDoc);
        var forms = xmlDoc.getElementsByTagName('template');
        for (var i=0; i<forms.length;i++){ 
         var fid   = forms[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
         var fname = forms[i].getElementsByTagName('name')[0].childNodes[0].nodeValue;
         var fselected = forms[i].getElementsByTagName('selected')[0].childNodes[0].nodeValue;

            select.options[i+1] = new Option(fname, fid);
            if (fselected == 1){
                select.options[i+1].selected = 1;
            }
        }
        temp_change(document.getElementById("template"));
    }
}

function temp_change(ob){

    t_id   = ob.options[ob.selectedIndex].value;;
    if (value == 0){
        clear_template_fields();
        return;
    }
    pg_id_select  = document.getElementById("privacy_group_id")
    pg_id = pg_id_select.options[pg_id_select.selectedIndex].value.substr(2);

    xmlHttp = get_ajax_object();
    if (xmlHttp==null){
        alert ("Your browser does not support Ajax");
        return;
    }
    var url = "/ajax_template_fields.php";
    url +=  "?template=" + t_id;
    url += "&pg=" + pg_id;
    if (document.getElementById("section")){
        url = url + "&section=" + document.getElementById("section").value;
    }
    
    url = url + "&sid=" + Math.random();

    xmlHttp.onreadystatechange=showTemplate;
    xmlHttp.open("GET",url, true);
    xmlHttp.send(null)
}

function clear_template_fields(){
    //console.log("clearing template fields");
    var tfoot = document.getElementById('template_fields');
    while (tfoot.rows.length>0){
        tfoot.deleteRow(0);
    }
}
function showTemplate(){
    if (xmlHttp.readyState == 4 || xmlHttp.readyState=="complete"){
        xmlDoc=xmlHttp.responseXML;
        clear_template_fields();
        //var tfoot = document.getElementById('edittable').createTFoot();
        var tfoot = document.getElementById('template_fields');
        var fields = xmlDoc.getElementsByTagName("field"); 
        var lineflag = 1;
        for (var i=0; i<fields.length; i++){
            var field = fields[i]; 
            var id    = field.getElementsByTagName('id')[0].firstChild.nodeValue;
            var name  = field.getElementsByTagName('name')[0].firstChild.nodeValue;
            var value = '';
            if ( field.getElementsByTagName('value')[0].firstChild){
                value = field.getElementsByTagName('value')[0].firstChild.nodeValue;
            }
            var type  = field.getElementsByTagName('type')[0].firstChild.nodeValue;
            //console.log("id = %s name = %s value = %s type = %s", id, name, value, type);


            var row = document.createElement("tr");
            var hcell = document.createElement("th");
            var hcellText = document.createTextNode(name + ":");
            hcell.appendChild(hcellText);
            hcell.align="right";
            row.appendChild(hcell);
            if (lineflag == 1){
                var linecell = document.createElement("td");
                linecell.setAttribute("class", "line");
                linecell.rowSpan=99;
                row.appendChild(linecell);
        
                lineflag=0;
            }
            var cell = document.createElement("td");
            var tfinput = document.createElement("input");
            switch(type){
                case "text":
                    tfinput.setAttribute('class', 'edittext');
                    tfinput.type='text';
                    tfinput.name='tft'+ id;
                    tfinput.size = 50;
                    tfinput.value= value;
                    cell.appendChild(tfinput);
                    break;
                case "value":
                    tfinput.setAttribute('class', 'edittext');
                    tfinput.type='text';
                    tfinput.name='tfv'+ id;
                    tfinput.value= value;
                    //tfinput.setAttribute("onkeypress", "verify_integers()");
                    cell.appendChild(tfinput);
                    break;
                case "binary":
                    tfinput.type='checkbox';
                    tfinput.name='tfb'+id;
                    tfinput.value=1;
                    if (value == 1){
                        tfinput.checked=true
                    } else {
                        tfinput.checked=false
                    }
                    cell.appendChild(tfinput);
                    break;
                case "date":
                    tfinput.setAttribute('class', 'edittext');
                    tfinput.type='text';
                    tfinput.name='tfd'+ id;
                    tfinput.id='tfd'+ id;
                    tfinput.value= value;
                    tfinput.size=10;
                    cell.appendChild(tfinput);
                    
                    var callink = document.createElement('a');
                    callink.hrefAttribute='#';
                    callink.name = "dateanchor" + id;
                    callink.id = 'dateanchor' + id;
                    callink.setAttribute("onClick", "cal.select(document.getElementById('tfd" + id + "'),'dateanchor" + id +  "','MM/dd/yyyy'); return false;");
                    callink.innerHTML = "<span style='font-size:smaller'>Select Date</span>";
                    cell.appendChild(callink);
                    break;
                default:
                    alert("Invalid variable type: " + type);
            }
            cell.colSpan = 2;
            row.appendChild(cell);
            cell = document.createElement("td")
            var tfspan = document.createElement("span");
            tfspan.name = 'tfe' + id;
            tfspan.id   = 'tfe' + id;
            tfspan.align ='right';
            tfspan.setAttribute('class', 'error');
            cell.appendChild(tfspan);
            row.appendChild(cell);
            tfoot.appendChild(row);
            
        }

    }
}

function verify_integers(){
    var key = window.event.keyCode;
    if (key > 47 && key < 58)
        return;
    else 
        window.event.returnValue = null;
}

function validateTemplateForms(theForm){
    var validationFlag = 0;
    var inputs = theForm.getElementsByTagName('input');
    for (var i=0; i<inputs.length; i++){
        var inputName = inputs[i].name;
        if (inputName.substr(0,2) == 'tf'){
            var inputType = inputName.charAt(2); 
            var inputId   = inputName.substr(3);
            var errorSpan = document.getElementById('tfe'+inputId);
            switch (inputType){
            case 'b':
                break;
            case 'v':
                if (inputs[i].value.match(/\D/)){
                    errorSpan.innerHTML = "This field must be numeric";
                    validationFlag = 1;
                } else {
                    errorSpan.innerHTML = "";
                }
                break;
            case 't':
                if (inputs[i].value.length == 0){
                    errorSpan.innerHTML = "This field must be filled out";
                    validationFlag = 1;
                } else {
                    errorSpan.innerHTML = "";
                }
                break;
            case 'd':
                if (! inputs[i].value.match(/(\d+)\/(\d+)\/(\d+)/)){
                    errorSpan.innerHTML = "This field must contain a valid date"
                    validationFlag = 1;
                } else {
                    errorSpan.innerHTML = "";
                }
                break;
            } 

        }
    
    }
    if (validationFlag){
        return false;
    }
    return true;
}

var field_counter = 0;

function set_next_field_index(value) {
    field_counter = value;
}

function moreFields() {
    field_counter++;
    
    var row = document.createElement("tr");
    row.id = 'fields'+field_counter;
    row.name = 'fields'+field_counter;
    
    //var padding_cell = document.createElement("td");
    //padding_cell.style.display = 'none';
    //row.appendChild(padding_cell);

    var name_cell = document.createElement("td");
    var name_input  = document.createElement("input");
    name_input.className = 'edittext';
    name_input.type='text';
    name_input.name='fieldname'+ field_counter;
    name_input.id='fieldname'+ field_counter;
    name_input.size = 32;
    name_cell.appendChild(name_input);
    row.appendChild(name_cell);

    var type_cell = document.createElement("td");
    var type_input = document.createElement("select");
    type_input.className = 'edittext';
    type_input.name='fieldtype'+ field_counter;
    type_input.options[0] = new Option('Text', 'text');
    type_input.options[1] = new Option('Number', 'value');
    type_input.options[2] = new Option('Date', 'date');
    type_input.options[3] = new Option('Binary', 'binary');
    type_cell.appendChild(type_input);
    row.appendChild(type_cell);

    var action_cell = document.createElement("td");
    var delete_button = document.createElement("input");
    delete_button.type='button';
    delete_button.value='Remove';
    delete_button.onclick = removeField;
    action_cell.appendChild(delete_button);
    row.appendChild(action_cell);

    var insertHere = document.getElementById('template_fields');
    insertHere.appendChild(row);
    
}

function removeField(e){
    var browser= navigator.appName;
    var obj;
    if (browser == "Microsoft Internet Explorer"){
        obj = event.srcElement;
    } else {
        obj = e.target;
    }
    var trow = obj.parentNode.parentNode;
    var ttable = trow.parentNode;
    ttable.removeChild(trow);
}


