/*
 *
 * checkAndSubmit.js
 *
 * Copyright 2007 Mediaspectrum, Inc. All Rights Reserved.
 *
 * This software is the proprietary information of Mediaspectrum, Inc.
 *
 */

var checkSessionUrl = null;
var checkSessionRequest = null;
var parametersRequest = null;
var lastCoverPageId = null;
var lastCoverWidth = null;
var lastCoverHeight = null;
var currentVisibleId = null;

function checkSize(fname) {
	lastCoverPageId = null;
	formname = fname;
	coverPage("PAGE_CHECK_SIZE");
}

function checkValidSession(fname) {
/*	alert("xyz checkValidSession entered"); */
	lastCoverPageId = null;
	if (fname && ("" + fname != "undefined"))
		formname = fname;
	var form = document.getElementById(formname);

	if(!validateForm(form))
		return ;
	alert("xyz checkValidSession after validateForm");

	var elements = form.elements;
	var count = 0;
	for (var i = 0; i < elements.length; i++) {
		var element = elements[i];
		if (element.type == "file" && element.value != "")
			count++;
	}
	startCheck(count);
}

function setCheckSessionUrl(url) {
	checkSessionUrl = url;
}

function startCheck(count) {
	checkSessionRequest = createRequest();
	if(checkSessionRequest == null) {
		alert(getJSMessage(CREATING_REQUEST_ERROR));
		return;
	}
	checkSessionUrl = replaceParamValue(checkSessionUrl, "filenum", count)
	checkSessionRequest.open("GET", preventCache(checkSessionUrl), true);
	checkSessionRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	checkSessionRequest.onreadystatechange = checkResponse;
	checkSessionRequest.send(null);
}

function checkResponse() {
	if (checkSessionRequest.readyState == 4) {
		var stat = checkSessionRequest.status;
		if (stat == 200) {
			var responseText = checkSessionRequest.responseText;
			if (responseText.trim() == "true")
//			validateAndSubmit();
			sendParameters();
			else
				goToExpired();
		} else {
			alert("function checkResponse " + getJSMessage(PROCESSING_REQUEST_ERROR) + " " + stat);
		}
	}
}

function goToExpired() {
	this.location.href = "sessionExpired.jsp";
}

function goToError() {
//	frames['infoFrame'].location.href="jsp/errorPage.jsp";
	frames['infoFrame'].location.href="controller?action=error";
}

function validateAndSubmit() {
//	alert("function validateAndSubmit 0");
	alert("xyz validateAndSubmit entered");
	var form = document.forms[formname];

	if(validateForm(form)) {
//		coverPage();
		var now = new Date();
		var ct = document.getElementById("client-timestampId");
		if(ct) ct.value = now.getTime();
		var url = form.action;
		url = replaceParamValue(url, "queue", requestQueue);
		form.action = url;

		try {
			form.submit();
		}
		// <For IE>
		catch (err) {
			uncoverPage();
			var message = err.message;
			if (message.indexOf("Access is denied") != -1 ) {
				alert(getJSMessage(FILE_NAME_ERROR));
			}
			else {
				alert("function validateAndSubmit. ERROR: message = " + message);
			}
			return;
		}
		// </For IE>

		start();
	}
}

/**
 * Creates and return new request object.
 */
function createRequest() {
	var newRequest = null;
	try {
		newRequest = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			newRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				newRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				newRequest = null;
			}
		}
	}
	return newRequest;
}

function makeParametersRequest(url) {
	var poststr = "";
	var form = document.forms[formname];

	coverPage();
	var now = new Date();
	var ct = document.getElementById("client-timestampId");
	if(ct) {
		ct.value = now.getTime();
	}

	if(form) {
		for(i = 0; i < form.elements.length; i++) {
			var param = form.elements[i].value;
			if (form.elements[i].type == "file")
				param = truncatePath(param);
			param = encodeUTF16Str(param);
			poststr += form.elements[i].name + "=" + param + "&";
		}
	}

//	alert("function makeParametersRequest poststr =\r\n" + poststr);
	return poststr;
}

function getRadioValue(radioName) {
	var collection = document.getElementsByName(radioName);
	for (i=0; i < collection.length; i++) {
		if (collection[i].checked)
			return(collection[i].value);
	}
	return "";
}

function truncatePath(path) {
	var ind = path.lastIndexOf("\\");
	if (ind == -1)
		ind = path.lastIndexOf("/");
	return path.substring(ind + 1);
}

function encodeUTF16Str(value) {
//	alert("function encodeUTF16Str value = " + value);
	if(window.console) window.console.log("function encodeUTF16Str value = " + value);
	var codeStr = "";
	for (var i = 0; i < value.length; i++) {
		var inputchar = value.charAt(i);
		var charCode = inputchar.charCodeAt(0);
		if ((charCode < 123 && charCode > 64) ||
			(charCode < 60 && charCode > 44) ||
			charCode == 36
				) {
			codeStr += inputchar;
		}
		else {
			while (("" + charCode).length < 4)
				charCode = "0" + charCode;
			codeStr += "@@" + charCode + ";";
		}
	}
	if(window.console) window.console.log("function encodeUTF16Str codeStr = " + codeStr);
//	alert("function encodeUTF16Str codeStr = " + codeStr);
	return codeStr;
}

function sendParameters() {
//	alert("function sendParameters");
	var url = preventCache('controller?action=upload_params&queue=' + requestQueue);
	if (formname == "UploadComponentForm")
		url = replaceParamValue(url, "action", "upload_comp_params");
	else
		url = replaceParamValue(url, "action", "upload_ad_params");
	var poststr = makeParametersRequest(url, formname);
//	alert("function sendParameters 1");

	parametersRequest = createRequest();
	parametersRequest.onreadystatechange = checkParametersResponse;
	parametersRequest.open('POST', url, true);
	parametersRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	parametersRequest.setRequestHeader("Content-length", poststr.length);
//	alert("function sendParameters poststr = " + poststr);
	parametersRequest.send(poststr);
}

function checkParametersResponse() {
	if(window.console) window.console.log("function checkParametersResponse 1 ");
	if (parametersRequest.readyState == 4) {
		var stat = parametersRequest.status;
		if (stat == 200) {
			var responseText = parametersRequest.responseText;
			if(window.console) window.console.log("function checkParametersResponse 2 parametersRequest.responseText = " + parametersRequest.responseText);
			if (responseText.trim() == "<message>ok</message>") {
				validateAndSubmit();
			}
			else  {
				if(window.console) window.console.log("function checkParametersResponse 3 goToError");
				goToError();
//				return;
			}
		} else {
			alert("function checkParametersResponse " + getJSMessage(PROCESSING_REQUEST_ERROR) + " " + stat);
		}
	}
}



