var req;
var pause = "false";

function getXMLHTTPObject() 
{
    if (window.XMLHttpRequest) {
        xmlHttpObject = new XMLHttpRequest();
    } 
    else if (window.ActiveXObject) {
        xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlHttpObject;
}

function reload_page( version, svr ) {
	var affiliate = getParameter('affiliate');
	var cpu = getParameter('cpu');
	var bw = getParameter('bw');
	var client = getParameter('cl');
	var signed = getParameter('signed');
	var array = new Array();
	if (version != null) {
		array = version.split('\n');
	}
	var paramString = '?';
	
	var i=0;
	var execString = '';
	for (i=0; i<array.length; i++)
	{
		var versionComponents = array[i].split(':');
		if (i == 0 && versionComponents.length > 0) {
			paramString = paramString + '&v=' + versionComponents[0];
		}
		if (versionComponents.length > 1) {
			var j=0;
			for(j=1; j< versionComponents.length; j++) {
				var executableComponents = versionComponents[j].split(',');
				if (executableComponents.length == 3) {
					execString = execString + ',';
					if (executableComponents[1] == 'true') {
						execString = execString + '/plura/restrictedjava/';
					}
					else {
						execString = execString + '/plura/java/';
					}
					var newVersion = executableComponents[0].replace(/-/g, "");
					execString = execString + 'pluracustomer' + newVersion + '.jar';
				}
			}
		}
	}

	paramString = paramString + '&p=' + execString;
	
	paramString = paramString + '&r=0'; //right now, no one uses restricted API

	if (svr != "" && svr != null)
		paramString = paramString + '&s=' + svr;					
	if (affiliate != "" && affiliate != null)
		paramString = paramString + '&affiliate=' + affiliate;
	if (cpu != "" && cpu != null)
		paramString = paramString + '&cpu=' + cpu;
	if (bw != "" && bw != null)
		paramString = paramString + '&bw=' + bw;
	if (client != "" && client != null)
		paramString = paramString + '&cl=' + client;
	if (signed != "" && signed != null)
		paramString = paramString + '&signed=' + signed;
			
	if( svr != null && (version == "" || version == null) ) {
		window.location.replace(svr + paramString);
	}
	else {				
		window.location.replace('http://' + window.location.host + paramString);
	}				
}

function getParameter( param ) {  
	var regexS = "[\\?&]"+param+"=([^&#]*)";  
	var regex = new RegExp( regexS );  
	var results = regex.exec( window.location.href );  
	if( results == null )    
		return "";  
	else    
		return results[1];
}

function getServer() {
 	req = getXMLHTTPObject();
   	req.open('GET', 'http://' + window.location.host + '/PluraDistribution/PluraClientServer', true);
   	req.onreadystatechange = getServerCallback;
   	req.send(null);
}

function getServerCallback() {
    if (req.readyState == 4) {
        if (req.status == 200) {
        	pause = "false";
			reload_page(null, req.responseText);
        }
        else {
        	pause = "true";
        	setTimeout("getServer()",300000);
		}
	}
}

function getVersion( nodeType ) {
 	req = getXMLHTTPObject();
   	req.open('GET', 'http://' + window.location.host + '/Plura20100617/PluraClientVersion?nodeType=' + nodeType, true);
   	req.onreadystatechange = getVersionCallback;
   	req.send(null);
}

function getVersionCallback() {
    if (req.readyState == 4) {
        if (req.status == 200) {        	
        	if (req.responseText.indexOf('failure') == -1) {
	        	pause = "false";
				reload_page(req.responseText, getParameter('s'));
        	}
        	else {        		
	        	pause = "true";
				if (getParameter('signed') == '1') {
					setTimeout("getVersion('SJAVA')",300000);
				}
				else {
					setTimeout("getVersion('JAVA')",300000);
				}
        	}
        }
        else {
        	pause = "true";
			if (getParameter('signed') == '1') {
				setTimeout("getVersion('SJAVA')",300000);
			}
			else {
				setTimeout("getVersion('JAVA')",300000);
			}
		}
	}
}