if (document.getElementById) {
	window.onload = initPage;
}

function initPage() {
	showLoginBox();
	showServicesForm();
	showDynamicForm();
}

function redirectToAction (o, n) {
	var inputs = document.getElementsByTagName('input');
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].name == n) {
			var url = new String(o.action);
			url += url.indexOf('?') == -1 ? '?' : '&';
			url += n + '=' + inputs[i].value;
			window.location = url;
			break;
		}
	}
	return false;
}

function urlencode (s) {
	s = escape(s);
	// encode treats space as %20 rather than +
	// and keeps + rather than replace with %2B
	s = s.replace('+', '%2B');
	s = s.replace('%20', '+');
	return s;
}

function showDynamicForm() {
	var o = document.getElementById('dynFormHolder');
	// dynFormName: var initialised in the page
	if (!o || typeof(dynFormName) != 'string') {
		return;
	}

	var loc =  getLocation() + 'form.php';
    var conObj = new XHConn();
    if (!conObj) return;

    var vars = new Array();
    var a = ['form', 'user', 'auth', 'time'];
    for (i = 0; i < a.length; i++) {
    	var v = getCookie(a[i]);
    	if (v != null) {
    		vars[vars.length] = a[i] + '=' + v;
    	}
    }
    if (getQS('service') != '') {
    	vars[vars.length] = 'service=' + getQS('service');
    }
    if (getQS('course') != '') {
    	vars[vars.length] = 'course=' + getQS('course');
    }

	var addContent = function(oXML) {
		o.innerHTML = oXML.responseText;
    };
    conObj.connect(loc + '?m=inline&f=' + urlencode(dynFormName) + '&r=' + urlencode(window.location), 'POST', vars.join('&'), addContent);
}

function showServicesForm () {
	var o = new Array (
		document.getElementById('extra0'),
		document.getElementById('extra1'),
		document.getElementById('extra2')
	);
	for (var i = 0; i < o.length; i++) {
		if (!o[i]) {
			return;
		}
		o[i].style.display = 'none';
	}
	var curr = getCookie('p');
	curr = (curr >= 1 && curr <= 3) ? curr : 1;
	o[curr].style.display = 'block';

	if (curr == 2) {
		// load the form into the page
		var loc =  getLocation() + 'form.php';
	    var conObj = new XHConn();
	    if (!conObj) return;
	
	    var vars = new Array();
	    var a = ['form', 'user', 'auth', 'time'];
	    for (i = 0; i < a.length; i++) {
	    	var v = getCookie(a[i]);
	    	if (v != null) {
	    		vars[vars.length] = a[i] + '=' + v;
	    	}
	    }
	
		var addContent = function(oXML) {
			var frm = document.getElementById('extra2frm');
			if (frm) {
				frm.innerHTML = oXML.responseText;
			}
			//o.innerHTML = oXML.responseText;
	    };
	    conObj.connect(loc + '?m=inline&f=extra&r=' + urlencode(window.location), 'POST', vars.join('&'), addContent);
	}
}


function getLocation() {
	var loc = new String(window.location.href);
	var paths = loc.split('/');
	var loc = '';
	for (var i = 0; i < paths.length; i++) {
		if (paths[i] == 'html' || paths[i].indexOf('.html') != -1 || paths[i].indexOf('.php') != -1) {
		//if (paths[i] == 'html' || paths[i] == 'index.html' || paths[i].indexOf('.php') != -1) {
			break;
		}
		loc += paths[i] + '/';
	}
	var qpos = loc.indexOf('?');
	if (qpos != -1) {
		loc = loc.substring(0, qpos);
	}
	loc = loc.substring(0, loc.lastIndexOf('/') + 1);
	return loc;
}


var clearedInputs = new Array();
function inputClear (id) {
	for (var i = 0; i < clearedInputs.length; i++) {
		if (clearedInputs[i] == id) {
			return;
		}
	}
	var o = document.getElementById(id);
	if (!o) {
		return;
	}
	o.value = '';
	clearedInputs[clearedInputs.length] = id;
}

function showLoginBox() {
	var objLogin = document.getElementById('login');
	if (!objLogin) {
		return false;
	}
	try {
		// this is all because opera had issues giving
		// HIERARCHY_REQUEST_ERR errors
	   	var o = document.createElement('div');
	   	var p = objLogin.parentNode;
	   	p.replaceChild(o, objLogin);
	   	o.appendChild(document.createTextNode(' '));
		o.setAttribute('id', 'login');
		objLogin = o;
   	}
   	catch (e) {
   		return;
   	}

	var loc = new String(window.location.href);
	var paths = loc.split('/');
	var loc = '';
	for (var i = 0; i < paths.length; i++) {
		if (paths[i] == 'html' || paths[i].indexOf('.html') != -1 || paths[i].indexOf('.php') != -1) {
		//if (paths[i] == 'html' || paths[i] == 'index.html' || paths[i].indexOf('.php') != -1) {
			break;
		}
		loc += paths[i] + '/';
	}
	var qpos = loc.indexOf('?');
	if (qpos != -1) {
		loc = loc.substring(0, qpos);
	}
	loc = loc.substring(0, loc.lastIndexOf('/') + 1) + 'userlogin.php';

    var conObj = new XHConn();
    if (!conObj) return;
    var vars = new Array();
    vars[0] = 'inline=true';
    var a = ['auth', 'user', 'time'];
    for (i = 0; i < a.length; i++) {
    	var v = getCookie(a[i]);
    	if (v != null) {
    		vars[vars.length] = a[i] + '=' + v;
    	}
    }
	var addContent = function(oXML) {
	    try {
			objLogin.innerHTML = oXML.responseText;
		}
		catch (e) {
		}
    };
    conObj.connect(loc + '?r=' + window.location, 'POST', vars.join('&'), addContent);
}

function getQS(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];
		}
	}
	return '';
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}


function submitForm(formId) {
	var formObj = document.getElementById(formId);
	if (!formObj) {
		return false;
	}
	var btnSubmit = document.createElement('input');
	btnSubmit.style.display = 'none';
	btnSubmit.setAttribute('type', 'submit');
	formObj.appendChild(btnSubmit);
	btnSubmit.click();
}

/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/
function XHConn()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}