/***
 Javascript library for the ITS Core Services Display and Edit pages
***/

var json_url = "https://www.case.edu/cgi-bin/its/coreservices/coreservices.pl";
var json_url_s = "https://www.case.edu/cgi-bin/its/coreservices/coreservices_s.pl";

var service_home = "/its/ourservices/"
var image_base = "/its/images/our_services/";
var service_page = service_home + "service.html";
var help_vars = {
  /*json_url: 'https://www.case.edu/cgi-bin/its/help/userinfo.pl',
  service_request_url: 'https://cdi-its-servicedesk.com/MRcgi/MRTicketPage.pl?USER=&PROJECTID=9&MRP=0&NEWSTATUS=_REQUEST_&MAJOR_MODE=CREATE&CUSTM=',*/              
  fullhoursDiv: null
};

var form_defaults = {
	"name": "Appears at the top of the service page",
	"description": "A description of this service.  Can include who the target customers are and what features they might find useful.",
  "image": "service image name",
	"owner_department": "Who is responsible for this service?",
	"availability_hours": "Hours of availability (7am-7pm Monday-Friday).  State exceptions (Bank Holidays, etc)",
	"target_availability": "Described in the service SLA",
	"maintenance_window": "When might this service be down for maintenance (3am-6am Monday-Friday)",
	"critical_period": "When will this service never go down for maintenance (exam periods, end of year close, etc)",
	"training_url": "Url for user training",
	"url": "Main url for this service",
	"policy": "Policies associated with this service",
	"pricing": "Any costs associated with this service",
	"related0_title": "Title",
	"related0_url": "Url",
	"related1_title": "Title",
	"related1_url": "Url",
	"related2_title": "Title",
	"related2_url": "Url",
	"related3_title": "Title",
	"related3_url": "Url",
	"related4_title": "Title",
	"related4_url": "Url",
	"related5_title": "Title",
	"related5_url": "Url",
	"related6_title": "Title",
	"related6_url": "Url",
	"related7_title": "Title",
	"related7_url": "Url",
	"related8_title": "Title",
	"related8_url": "Url",
	"related9_title": "Title",
	"related9_url": "Url"
};
	
function toggle_hours() {
  (help_vars.fullhoursDiv.style.display == 'block')?help_vars.fullhoursDiv.style.display = 'none':help_vars.fullhoursDiv.style.display = 'block';
}


/******
	Functions for the Core Services Editor
*******/

function init_edit_page() {
	
	set_form_defaults();
	get_services();
}

function set_form_defaults() {
	var the_form = document.coreservices_form;
	
	for (var i=0; i<the_form.elements.length; i++) {
		var el = the_form.elements[i];
		
		if (el.type == "text" || el.type == "textarea") {
			el.className = "empty";
			if (form_defaults[el.name]) {
				el.value=form_defaults[el.name];
			}
		}
		
		else if (el.type == "select" || el.type == "select-one") {
			if (el.name != "serviceselect") {
				el.selectedIndex = 0;
			}
		} 
		
		else if (el.type == "checkbox") {
			el.checked = false;
		}
	}
}

function disable_form(enabled) {
	var the_form = document.coreservices_form;
	
	for (var i=0; i<the_form.elements.length; i++) {
		the_form.elements[i].disabled = enabled;
	}
}

function do_form_input(element, focus) {
	if (focus) {
		if (element.className == "empty") {
			element.value="";
			element.className = "full";
		}
	} else {
		if (element.className == "full") {
			if (element.value == "") {
				element.value=form_defaults[element.name];
				element.className = "empty";
			}
		}
	}
	
}

/*
	Get the list of catagories and services from the backend 
	and perform initial population of the form.
*/
function get_services() {
	disable_form(true);
	get_data(true, "get_services", json_url_s, "display_services");
}

function display_services(json) {	
	var service_select = document.coreservices_form.serviceselect;
	var category_select = document.coreservices_form.category_id;
	
	// clear both select lists before we populate them
	clean_select(service_select);
	clean_select(category_select);
	
	// add "default" values to the selects
	service_select[service_select.length] = new Option("-- Create a new service --", "0");
	category_select[category_select.length] = new Option("Select a category", "-1");
	
	for (var i=0; i<json.category.length; i++) {
		// add category to the category list
		category_select[category_select.length] = new Option(json.category[i].name, json.category[i].id);
		
		// add category to the service list (as a header for organization)
		//service_select[service_select.length] = new Option("--"+json.category[i].name+"--", "0");
	
		// add services withing this catagory to the service select list
		if (json.category[i].service != null) {
			var services = json.category[i].service;
			for (var j=0; j<services.length; j++) {
				service_select[service_select.length] = new Option(services[j].name, services[j].id);
			}
		}
	}
	
	disable_form(false);
}

/*
	Populate the form with a selected service
*/

function get_service(select) {
	set_form_defaults();

	// get the value selected option
	var selected_id = select[select.selectedIndex].value;
	
	// ignore id=0...it's a header value
	if (selected_id == "0") {
	//	set_form_defaults();
		return true;
	}
	
  document.getElementById("savestatus").innerHTML="";

	
	get_data(true, "get_service_full", json_url_s, "display_service", "service_id="+selected_id);
}

function display_service(json) {
	
	var svc = json.service[0];
	var form = document.coreservices_form;
	
	// fill the form fields
	set_select(form.category_id, svc.category_id);
	set_input(form.name, svc.name);
	set_input(form.description, svc.description);
	set_input(form.image, svc.image);
	set_input(form.owner_department, svc.owner_department);
	
	/*if (svc.training != null) {
		if (svc.training == 'Y') { form.training.checked = true; }
		else { form.training.checked = false; }
	}*/
	
	set_input(form.training_url, svc.training_url);
	
	set_input(form.url, svc.url);
	set_input(form.policy, svc.policy);
	set_input(form.availability_hours, svc.availability_hours);
	set_select(form.severity, svc.severity);
	set_select(form.priority, svc.priority);
	set_input(form.target_availability, svc.target_availability);
	set_input(form.maintenance_window, svc.maintenance_window);
	set_input(form.critical_period, svc.critical_period);
	set_input(form.pricing, svc.pricing);
	
	// handle related svc links here
	// they are encoded title|url||title|url||title|url
	if (svc.related != null && svc.related != "")  {
		var related = svc.related.split("||");
		var r_info = "";
		
		if (related[0] != null) {
			r_info = related[0].split("|");
			form.related0_title.value = r_info[0]; form.related0_title.className="full";
			form.related0_url.value = r_info[1]; form.related0_url.className="full";
		}
		if (related[1] != null) {
			r_info = related[1].split("|");
			form.related1_title.value = r_info[0]; form.related1_title.className="full";
			form.related1_url.value = r_info[1]; form.related1_url.className="full";
		}
		if (related[2] != null) {
			r_info = related[2].split("|");
			form.related2_title.value = r_info[0]; form.related2_title.className="full";
			form.related2_url.value = r_info[1]; form.related2_url.className="full";
		}
		if (related[3] != null) {
			r_info = related[3].split("|");
			form.related3_title.value = r_info[0]; form.related3_title.className="full";
			form.related3_url.value = r_info[1]; form.related3_url.className="full";
		}
		if (related[4] != null) {
			r_info = related[4].split("|");
			form.related4_title.value = r_info[0]; form.related4_title.className="full";
			form.related4_url.value = r_info[1]; form.related4_url.className="full";
		}
		if (related[5] != null) {
			r_info = related[5].split("|");
			form.related5_title.value = r_info[0]; form.related5_title.className="full";
			form.related5_url.value = r_info[1]; form.related5_url.className="full";
		}
		if (related[6] != null) {
			r_info = related[6].split("|");
			form.related6_title.value = r_info[0]; form.related6_title.className="full";
			form.related6_url.value = r_info[1]; form.related6_url.className="full";
		}
		if (related[7] != null) {
			r_info = related[7].split("|");
			form.related7_title.value = r_info[0]; form.related7_title.className="full";
			form.related7_url.value = r_info[1]; form.related7_url.className="full";
		}
		if (related[8] != null) {
			r_info = related[8].split("|");
			form.related8_title.value = r_info[0]; form.related8_title.className="full";
			form.related8_url.value = r_info[1]; form.related8_url.className="full";
		}
		if (related[9] != null) {
			r_info = related[9].split("|");
			form.related9_title.value = r_info[0]; form.related9_title.className="full";
			form.related9_url.value = r_info[1]; form.related9_url.className="full";
		}
	}

  // set the last mod
  document.getElementById("last_modified").innerHTML = "last modified " + svc.update_date + " by " + svc.mod_by;
}

function save_service() {
	disable_form(true);
	
	document.getElementById("savestatus").style.color = "#aaaaaa";
	document.getElementById("savestatus").innerHTML = "Saving...";

	var form = document.coreservices_form;
	
	var data = new Object();
	
	data.category_id = get_select(form.category_id);
	data.name = get_input(form.name);
	data.description = get_input(form.description);
	data.image = get_input(form.image);
	data.owner_department = get_input(form.owner_department);
	
	/*if (form.training.checked) { data.training = "Y"; }
	else { data.training = "N"; }*/
	data.training="X";
	
	data.url = get_input(form.url);
	data.policy = get_input(form.policy);
	data.availability_hours = get_input(form.availability_hours);
	data.severity = get_select(form.severity);
	data.priority = get_select(form.priority);
	data.target_availability = get_input(form.target_availability);
	data.training_url = get_input(form.training_url);
	data.maintenance_window = get_input(form.maintenance_window);
	data.critical_period = get_input(form.critical_period);
	data.pricing = get_input(form.pricing);
	
	// build the related services string
	var sb = [];
	if (form.related0_title.className == "full") { sb[sb.length] = form.related0_title.value+"|"+form.related0_url.value; }
	if (form.related1_title.className == "full") { sb[sb.length] = form.related1_title.value+"|"+form.related1_url.value; }
	if (form.related2_title.className == "full") { sb[sb.length] = form.related2_title.value+"|"+form.related2_url.value; }
	if (form.related3_title.className == "full") { sb[sb.length] = form.related3_title.value+"|"+form.related3_url.value; }
	if (form.related4_title.className == "full") { sb[sb.length] = form.related4_title.value+"|"+form.related4_url.value; }
	if (form.related5_title.className == "full") { sb[sb.length] = form.related5_title.value+"|"+form.related5_url.value; }
	if (form.related6_title.className == "full") { sb[sb.length] = form.related6_title.value+"|"+form.related6_url.value; }
	if (form.related7_title.className == "full") { sb[sb.length] = form.related7_title.value+"|"+form.related7_url.value; }
	if (form.related8_title.className == "full") { sb[sb.length] = form.related8_title.value+"|"+form.related8_url.value; }
	if (form.related9_title.className == "full") { sb[sb.length] = form.related9_title.value+"|"+form.related9_url.value; }
	if (sb.length > 0) {
		data.related = sb.join("||");
	}
	
	// send the data to the server
	data.mode = "put_service";
	data.service_id = get_select(form.serviceselect);
	
	$.ajax({
		type: 'POST',
		url: json_url_s,
		data: data,
		success: show_save_state,
		dataType: "json"
	});
}

function show_save_state(data) {
	if (data.result == "success") {
		document.getElementById("savestatus").style.color = "green";
		document.getElementById("savestatus").innerHTML = "Save Complete";
		init_edit_page();
	} else {
		document.getElementById("savestatus").style.color = "red";
		document.getElementById("savestatus").innerHTML = "Save Failed";
	}

	disable_form(false);
}

function delete_service() {
  var answer = confirm("This will delete this service and make it no longer visible in the Our Services catalog.  Are you sure you want to continue?");
  if (answer) {
    delete_service2();
  } else {
  }
}

function delete_service2() {
	disable_form(true);
	
	document.getElementById("deletestatus").style.color = "#aaaaaa";
	document.getElementById("deletestatus").innerHTML = "Deleting...";

	var form = document.coreservices_form;
	
	var data = new Object();
	
	// fill in required fields
  data.category_id = get_select(form.category_id);
	data.name = get_input(form.name);

	
	// send the data to the server
	data.mode = "delete_service";
	data.service_id = get_select(form.serviceselect);

  $.ajax({
		type: 'POST',
		url: json_url_s,
		data: data,
		success: show_delete_state,
		dataType: "json"
	});
	
}

function show_delete_state(data) {
	if (data.result == "success") {
		document.getElementById("deletestatus").style.color = "green";
		document.getElementById("deletestatus").innerHTML = "Delete Complete";
		init_edit_page();
	} else {
		document.getElementById("deletestatus").style.color = "red";
		document.getElementById("deletestatus").innerHTML = "Delete Failed";
	}

	disable_form(false);
}

/****
	Functions for the Core Services Catalog
*****/

function init_catelog_page(_bc) {
help_vars.fullhoursDiv = document.getElementById('fullhours');
init_fancy_box();
  // set alternate service display page based on URL
  if ( location.href.match('/its/help') ) {
    service_page = '/its/help/service.html';
  }
	
	get_data(false, "get_services", json_url, "display_catelog_services");
	
	
	catelog_mode("category");
}
/****
* Fancy Box Code
****/

function init_fancy_box() {
 $(".mappop").fancybox({
          'width'				: '85%',
          'height'			: '85%',
          'autoScale'     	: false,
          'transitionIn'		: 'none',
          'transitionOut'		: 'none',
          'type'				: 'iframe'
      });
}
/******/
function display_catelog_services(json) {

	/* populate the service catalog tab */
	
	var catelog_div = document.getElementById("coreservices_catalog");

	var sb = [];
	
	json.category.sort(function (obj1, obj2) {
                        return obj1.sort_order < obj2.sort_order ? -1 :
                        (obj1.sort_order > obj2.sort_order ? 1 : 0);
                    });
	
	for (var i=0; i<json.category.length; i++) {
		// Service Header
		var panel_num = i+1;

		var items = [];
	
		if (json.category[i].service != null) {
			var services = json.category[i].service;

			for (var j=0; j<services.length; j++) {
				if (services[j].description == "") {	
					items[items.length] = showhide_additem('<span class="item_dot">&#149;</span>'+services[j].name);
				} else {
					items[items.length] = showhide_additem('<a href="'+service_page+'?id=' + services[j].id + '"><span class="item_dot">&#149;</span>' +services[j].name+'</a>');
				}
			}
		}

//		sb[sb.length] = showhide_addmenu("catelog"+i, '<div style="float: left; display: inline; width: 25px; border: solid 1 black;">'+panel_num+".</div>  "+json.category[i].name, items);
		sb[sb.length] = showhide_addmenu("catelog"+i, json.category[i].name, json.category[i].description, json.category[i].id, items);
	}

	catelog_div.innerHTML = sb.join("\n");
		
	/* populate the a-z tab */
	
	var az_div = document.getElementById("coreservices_catalog_az");
	sb = [];
		
	for (var i=0; i<json.az.length; i++) {
    sb[sb.length] = '<div class="showhide">';
  
		sb[sb.length] = '<div class="az_header"><div class="category_title" style="margin-top: 0px;><a name="'+json.az[i].letter+'">'+json.az[i].letter+'</a></div></div>';
		
		var services = json.az[i].service;

		sb[sb.length] = '  <div class="subsection">';

		for (var j=0; j<services.length; j++) {
      if (services[j].description == "") {	
        sb[sb.length] = showhide_additem('<span class="item_dot">&#149;</span>'+services[j].name);
      } else {
        sb[sb.length] = showhide_additem('<a href="'+service_page+'?id=' + services[j].id + '"><span class="item_dot">&#149;</span>' +services[j].name+'</a>');
      }
    }
    
    sb[sb.length] = '</div></div>';
	}
	
	az_div.innerHTML = sb.join("\n");
}

function catelog_mode(_mode) {
	var mode_switch_div = document.getElementById("mode_switch_div");
	var category_div = document.getElementById("coreservices_catalog");
	var az_div = document.getElementById("coreservices_catalog_az");

  if (_mode == 'az') {
    mode_switch_div.innerHTML = "<a href=\"#\" onclick=\"javascript: catelog_mode('category');\">Display Services by Category</a>";
    category_div.style.display="none";
    az_div.style.display="block";
  } else {
    mode_switch_div.innerHTML = "<a href=\"#\" onclick=\"javascript: catelog_mode('az');\">Display Services Alphabetically</a>";
   az_div.style.display="none";
   category_div.style.display="block";
  }
}

/******
	Functions for individual service display
*******/

function init_service_page() {
	help_vars.fullhoursDiv = document.getElementById('fullhours');
init_fancy_box();
	//var service_id = window.location.search.substring(1);
	var service_id = getUrlVars()["id"];
	
	get_data(false, "get_service", json_url, "display_service_service", "service_id="+service_id);
}

function display_service_service(json) {
	
	var svc = json.service[0];

	var sb = [];
	var sb2 = [];
	
	// Set the service title
	document.getElementById('service_title').innerHTML = svc.name;

	// Display the left column
  sb[sb.length] = service_block('Description', svc.description);
	
	if (svc.url != null && svc.url.length != 0) {
		sb[sb.length] = service_block('Take Me There', '<a href="'+svc.url+'" target="_blank">'+svc.url+'</a>');
	}

	if (svc.owner_department != null && svc.owner_department.length != 0) {
		sb[sb.length] = service_block('Service Contacts', '<table border="0" cellspacing="0" cellpadding="0">' + service_field('Department', svc.owner_department) + '</table>');
	}
	
	sb2 = [];
	sb2[sb2.length] = service_field("Hours of Availability", svc.availability_hours);
	sb2[sb2.length] = service_field("Level of Severity", svc.severity);
	sb2[sb2.length] = service_field("Prioritization", svc.priority);
	sb2[sb2.length] = service_field("Mainenance Window(s)", svc.maintenance_window);
	sb2[sb2.length] = service_field("Critical Periods", svc.critical_period);
	var avail = sb2.join("");
	if (avail.length > 0) {
		//sb[sb.length] = service_block('availability', '<table border="0" cellspacing="0" cellpadding="0">' + sb2.join("") + '</table>');
		sb[sb.length] = service_block('Availability', '<dl>' + avail + '</dl>');
	}
	
	document.getElementById('service_left_column').innerHTML = sb.join("\n");

	
	// Dislay the Right Column
  sb = [];
	
	if (svc.image != null && svc.image.length != 0) {
    sb[sb.length] = '<img class="service_image" src="'+image_base+svc.image+'" />';
  }
	
	sb2 = [];
	sb2[sb2.length] = '<ul>';
	sb2[sb2.length] = '<li><a href="http://www.case.edu/its/help/service_request.html" target="_blank">Submit a Request</a></li>';
	sb2[sb2.length] = '<li>Phone: (216) 368-HELP (368-4357)</li>';
	/*sb2[sb2.length] = '<li>Web:<a href="http://help.case.edu">help.case.edu</a></li>';*/
	sb2[sb2.length] = '<li><a href="mailto:help.case.edu">Email: help@case.edu</a></li>';
	/*sb2[sb2.length] = '<li><a href="http://help.case.edu/Locations-Hours/56/" target="_blank">In Person</a></li>';*/
	sb2[sb2.length] = '</ul>';
	
	sb[sb.length] = service_block_graybox('Getting Help', sb2.join(""), '/its/images/help-icon.png');
	
	if (svc.training_url != "") {
		sb[sb.length] = service_block_graybox('How To', '<a href="'+svc.training_url+'" target="_blank">' + svc.training_url + '</a>', '/its/images/training-icon.png');
	}
	
	sb[sb.length] = service_block_graybox('Pricing', svc.pricing);
	
	
	if (svc.related != null && svc.related.length != 0) {
		sb2 = [];
		
		if (svc.related != null && svc.related != "")  {
			var related = svc.related.split("||");
			var r_info = "";
	
			sb2[sb2.length] = "<ul>";
			for (var i=0; i<10; i++) {
				if (related[i] != null) {
					r_info = related[i].split("|");
					sb2[sb2.length] = '<li><a href="'+r_info[1]+'" target="_blank">'+r_info[0]+'</a></li>';
				}
			}
			sb2[sb2.length] = "</ul>";
		}	
		
		sb[sb.length] = service_block_graybox('Related Topics', sb2.join(""), '/its/images/related-icon.png');
	}
	
	document.getElementById('service_right_column').innerHTML = sb.join("\n");
}

function service_field(title, content) {
	if(content != null && content.length != 0) {
		//return '<tr><td valign="top" class="field_title">'+title+'</td><td valign="top" class="field_body">'+decode_string_html(content)+'</td></tr>'; 
		return '<dt>'+title+':</dt><dd>'+decode_string_html(content)+'</d>'; 
	}

	return "";
}

function service_block(title, content) {
	if (content != null && content.length != 0) { 
		return '<div class="header">'+title+'</div><div class="content">'+decode_string_html(content)+'</div>';
	}
	
	return "";
}

/*
function service_block_graybox(title, content, image) {
  if (content != null && content.length != 0) { 
		if (image != null && image.length != 0) {
  		return '<div class="graybox" style="background-image: url('+image+');"><div class="header">'+title+'</div><div class="content">'+decode_string_html(content)+'</div></div>';
    } else {		  
      return '<div class="graybox"><div class="header">'+title+'</div><div class="content">'+decode_string_html(content)+'</div></div>';
  	}
	}
	return "";
}
*/

function service_block_graybox(title, content, image) {
  if (content != null && content.length != 0) { 
		if (image != null && image.length != 0) {
  		return '<div class="graybox"><img class="service_icon" src="'+image+'"/><div class="header">'+title+'</div><div class="content">'+decode_string_html(content)+'</div></div>';
    } else {		  
      return '<div class="graybox"><div class="header">'+title+'</div><div class="content">'+decode_string_html(content)+'</div></div>';
  	}
	}
	return "";
}


/******
	Hide/Show Explorer Code
******/

var plus_img = "category_plus.png";
var minus_img = "category_minus.png";

function showhide_addmenu(_id, _text, _description, _category_id, _items) {
	var sb = [];
	
		sb[sb.length] = '<div class="showhide">';

		sb[sb.length] = '  <div id="showhide_'+_id+'" class="header" onclick="showhide(\''+_id+'\')" >';
		
		sb[sb.length] = '    <div class="category_icon"><img class="category_icon" src="'+image_base+_category_id+'.png"/></div>';

    sb[sb.length] = '    <div class="showhide_icon">	<img id="'+_id+'-img" class="showhide_icon", src="'+image_base+plus_img+'" height="11" width="16"/></div>';
    
    sb[sb.length] = '    <div class="category_title">' + _text + '<br /><span class="category_description">'+_description+'</span></div>';
			
//		sb[sb.length] = '    <img class="category_icon" src="images/coreservices-cat-icon.png"/><img id="'+_id+'-img" class="showhide_icon", src="'+plus_img+'" height="12" width="16"/>'+ _text;
		//sb[sb.length] = '     '+ _text;
		sb[sb.length] = '  </div>';
		sb[sb.length] = '  <div class="subsection" style="display:none" id="'+_id+'-div">';
	
		sb[sb.length] = _items.join("\n");
	
		sb[sb.length] = '  </div>';
		sb[sb.length] = '</div>';

	return sb.join("");
}

function showhide_additem(_text, _event) {
	var sb = [];
	
	sb[sb.length] = '<div class="item"';
	if (_event != null) {
		sb[sb.length] = ' onclick="'+_event+'"';
	}
	sb[sb.length] = '>' + _text + '</div>';
	
	return sb.join("");
}

function showhide(id) {
    the_block = document.getElementById(id+"-div");
    the_image = document.getElementById(id+"-img");

    if (the_block.style.display == "none") {
        the_block.style.display = "block";
        the_image.src = image_base+minus_img;
	  } else {
        the_block.style.display = "none";
        the_image.src = image_base+plus_img;
    }
}

/****
* Utility Functions
*****/

function decode_string_html(_str) {
	if (_str != null && _str.length != 0) {
		var str = _str.split(";-;");
		if (str.length == 1) {
			// only a single line....don't do anything to it
			return str[0];
		} else {
			return '<div class="bodyblock">' + str.join('</div><div class="bodyblock">') + '</div>';
		}
	}
	
	return "";
}

function set_input(el, value) {
	if (value != null) {
		// replace two pipes '||' with a newline
		el.value = value.replace( new RegExp(";-;", "g"), "\n");
		el.className = "full";
	}
}

// get_input returns a name=value pair to use in the form submit
function get_input(el, data) {
	if (el.className == "full") {
		var value = el.value;		
		value = el.value.replace( new RegExp("\\n", "g"), ";-;");
		return value;
	}	
}

function clean_select(select) {
	for (var i=select.length; i >= 0; i--) {
		select[i] = null;
	}
}

function set_select(select, value) {
	select.selectedIndex = 0;
	
	if (value != null) {
		for (var i=0; i<select.length; i++) {
			if (select[i].value == value) {
				select.selectedIndex = i;
				break;
			}
		}
	}
}

function get_select(select, data) {
	return select[select.selectedIndex].value;
}

function get_data(_secure, _mode, _url, _callback, _params) {
	var url = _url + "?mode=" + _mode + "&callback=" + _callback;
	if (_params != null) {
		url += "&" + _params;
	}

	var head = document.getElementsByTagName('head')[0];
  var script = document.createElement('script');
  script.type = 'text/javascript';
  if (_secure) {
	  script.src = "https://login.case.edu/cas/login?service=" + escape(url);
  } else {
  	script.src = url;
  }
  //alert(script.src);
  head.appendChild(script);
}

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
