// remote scripting library
// (c) copyright 2005 modernmethod, inc
// heavily modified by studiox, santa fe nm 9/2007
function rs_init_object() {	
	var A;
	try {
		A=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			A=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			A=null;
		}
	}
	if(!A && typeof XMLHttpRequest != "undefined")
		A = new XMLHttpRequest();
	return A;
}

// wrapper for get_day
function x_get_data_results(params) {
	var i, x;
	var url = "/cgi-bin/danman/page.cgi?t=ajax" 


    if (params.location == "bookmark.cgi") {
     	var url = "/cgi-bin/danman/bookmark.cgi?t=ajax";
        if (params.remove) {
            params.increment = "";
        }
    }
    if (params.location == "rate.cgi") {
     	var url = "/cgi-bin/danman/rate.cgi?t=ajax";
        if (params.remove) {
            params.increment = "";
        }
    }	
    if (params.location == "search.cgi") {
     	var url = "/cgi-bin/danman/searchmaps.cgi?t=ajax";
            params.increment = "";
    }	

    if (params.script) {
     	var url = params.script;
        if (params.remove) {
            params.increment = "";
        }
    }



	for ( var par in params ) {
		if (par == 'replace') {
			continue; 
//		} else if (par == 'p') {
          continue;
       }
		url = url + "&" + par + "=" + escape( params[par] );
	}
	
	url = url.replace( /[+]/g, '%2B'); // fix the unescaped plus signs 
// alert("url="+url);

	x = rs_init_object();
	x.open("GET", url, true);
	x.onreadystatechange = function() {
	    if (x.readyState != 4) 
		return;
	    
	    var status;
	    var data;
	    status = x.responseText.charAt(0);
	    data = x.responseText.substring(0);  
        if (params.replace) {
		    document.getElementById(params.replace).innerHTML = data;
            var r = document.getElementById(params.replace);
        }
         if (params.increment >= '0') {
// this is the id of the element we're adding. this must be different from the rowcounter. Never decremented.
             var mi =  document.getElementById('idcounter');
             var m =  mi.value * 1;
                 r.id = "row"+params.ID;
                 r.style.display = 'block';
                 mi.value = m + 1;  //now increment for the next pass through.

// rowcounter is used to control the height of the margins and wrappers and gets decremented when removing a node.
             var i =  document.getElementById('rowcounter');
             var c =  i.value * 1;
                 i.value = c + 1;
             var newrow = document.createElement('div');
                  newrow.id='next';
                  newrow.style.display = 'none';
	         var cw = document.getElementById('currentwrapper'); 
                 cw.appendChild(newrow);
//                  cw.className = "bordered";
//                  cw.style.margin = "-"+margin+"px 0 0 0px";
if (m.value == "0") {
                 cw.appendChild(newrow);
} else {
                 cw.insertBefore(newrow,r);
}



         }
	}
	x.send(null);
    }



function load_data(form,replace,id) {
  var action =(form.action.value);
//  var event_id =(form.ID.value);
//  var replace = 'venues'
  params = new Object();
  var keywords ="";
    for (var i = form.elements.length - 1; i >= 0; i--) {
        if (form.elements[i].value) {
            if (form.elements[i].name.match (/-/)    ) {
               continue
            }
            var fname = form.elements[i].name;
//alert(form.elements[i].checked);
            if(form.elements[i].type == "checkbox") {
// alert(form.elements[i].checked);
               if(form.elements[i].checked) {
                 keywords += form.elements[i].value + ",";
               }
            } else {

              if (fname) {
                eval('params.'+fname+' = form.elements[i].value');
              } else {
              continue
              }
            }
        }
    }
if (id) {
  params.ID = id;
}
  params.query = "1";
  params.keywords = keywords;
  params.action = action;
  params.replace = replace;
  params.ajax = '1';
  params.t = '';
  x_get_data_results(params);
}


function load_category(id,replace,action) {
//  var action =(form.action.value);
//  var event_id =(form.ID.value);
//  var replace = 'venues'
  params = new Object();

  if (id) {
     params.g = id
  }
  params.action = action
  params.replace = replace
  params.location = 'page.cgi'
  params.ajax = '1'
//  params.t = undef;
  x_get_data_results(params);
}


function load_link(id,replace,action) {
//  var action =(form.action.value);
//  var event_id =(form.ID.value);
//  var replace = 'venues'
  params = new Object();

  if (id) {
     params.g = id
  }
  params.action = action
  params.replace = replace
  params.location = 'page.cgi'
  params.ajax = '1'
//  params.t = undef;
  x_get_data_results(params);
}


function RenameAnchor(anchorid, anchorname){
			document.getElementById(anchorid).name = anchorname; //this renames the anchor
		}

function RedirectLocation(anchorid, anchorname, HashName, id, replace, action){
			RenameAnchor(anchorid, anchorname);
			document.location = HashName;
//location.href = HashName;
            load_category(id,replace,action)
}



function rate_it(form,replace,id) {
//  var action =(form.action.value);
//  var event_id =(form.ID.value);
//  var replace = 'venues'
  params = new Object();

    for (var i = form.elements.length - 1; i >= 0; i--) {

        if (form.elements[i].value) {
            if (form.elements[i].name.match (/-/)    ) {
               continue
            }
            var fname = form.elements[i].name;
            if (fname) {
              eval('params.'+fname+' = form.elements[i].value');
            } else {
              continue
            }

        }
    }
if (id) {
  params.ID = id
}

  params.replace = replace
  params.location = 'rate.cgi'
  params.ajax = '1'
  params.t = ''
  x_get_data_results(params);
}





function bookmark(form,replace,id,action,mycenter) {
//  var action =(form.action.value);
//  var event_id =(form.ID.value);
//  var replace = 'venues'
  params = new Object();

    for (var i = form.elements.length - 1; i >= 0; i--) {
        if (form.elements[i].value) {
            if (form.elements[i].name.match (/-/)    ) {
               continue
            }
            var fname = form.elements[i].name;
            if (fname) {
              eval('params.'+fname+' = form.elements[i].value');
            } else {
              continue
            }

        }
    }
if (id) {
  params.ID = id
}
  params.setcenter = mycenter
  params.action = action
  params.replace = replace
  params.location = 'bookmark.cgi'
  params.ajax = '1'
//  params.t = undef;
  x_get_data_results(params);
}




function remove_row(id) {
	var r = document.getElementById(id);
//    alert ("should be removing this element"+ r);
    document.getElementById('currentwrapper').removeChild(r);
// have to decrement the counter for spacing reasons.
    var i =  document.getElementById('rowcounter');
         r.id = "row"+i.value;
    var c =  i.value * 1;
         i.value = c - 1;
}


function remove_bookmark(id,folder_id,replace,parent) {
	var r = document.getElementById(replace);
//    alert ("should be removing this element"+ id + r);
  document.getElementById(parent).removeChild(r);
  params = new Object();
  params.ID = id;
  params.my_folder_id = folder_id;
  params.remove = "remove";
  params.action = "links_manage";
//  params.replace = replace;
  params.location = 'bookmark.cgi';
  params.ajax = '1';
  x_get_data_results(params);


// I don't think we do this when we're working on preloaded bookmarks
//    var i =  document.getElementById('rowcounter');
//         r.id = "row"+i.value;
//    var c =  i.value * 1;
//         i.value = c - 1;
}

function searchmaps(form,replace) {
  params = new Object();

    for (var i = form.elements.length - 1; i >= 0; i--) {

        if (form.elements[i].value) {
            if (form.elements[i].name.match (/-/)    ) {
               continue
            }
            var fname = form.elements[i].name;
            if (fname) {
              eval('params.'+fname+' = form.elements[i].value');
            } else {
              continue
            }

        }
    }

  params.replace = replace
  params.location = 'search.cgi'
  params.ajax = '1'
//  params.t = ''
  x_get_data_results(params);
}

function searchmapsclick(script,replace) {
  params = new Object();


  params.replace = replace;
  params.script = script;

// alert (params.location);
  params.ajax = '1';
//  params.t = ''
  x_get_data_results(params);
}




function frequency_changed(value) {
  switch(value) {
    case 'Once':
      Element.hide('Last_Date');
      Element.hide('Frequency_Exception');
      break;

    case 'Daily':
      Element.show_row('Last_Date');
      Element.show_row('Frequency_Exception');
      break;

    case 'Weekly':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Monthly-Date':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Monthly-Day':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;

    case 'Yearly-Date':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Yearly-Day':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    default:
      return true;
  }
}

// From Prototype library
//
// Shortcut for accessing elements with $(id) instead of documet.getElementById(id)
function $() {
  var elements = new Array();
  
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;
      
    elements.push(element);
  }
  
  return elements;
}

var Element = {

  toggle: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = 
        (element.style.display == 'none' ? '' : 'none');
    }
  },

  hide: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = 'none';
    }
  },

  show: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = '';
    }
  },

  show_row: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      try {
        element.style.display = 'table-row';
      } catch( expError ) {
        element.style.display = 'block';
      }
    }
  },

  remove: function(element) {
    element = $(element);
    element.parentNode.removeChild(element);
  }
}

