﻿var formChecker = null;
var respose = "";
var fileslist = new Array();
var http = null;


function get_http(){
    var xmlhttp = false;
    if(window.XMLHttpRequest) {
        try {
            xmlhttp= new XMLHttpRequest();
        } catch(e) {
            xmlhttp = false;
        }
    } else if(window.ActiveXObject) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                xmlhttp = false;
            }
        }
    }
    return xmlhttp;
};
function base64(input) {
return base64_encode(base64_encode(input));
};
function base64_encode(input) {
var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
		input = _utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
			_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
 
		}
 
		return output;

};
function _utf8_encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	};
function cancelupload() {
		while (swfu.getStats().files_queued !== 0) {
		swfu.cancelUpload();
		}
EnableButtons();
re.options.length = 0;
document.getElementById("ooalert1").style.display = "none";
deltmpremote();
};
function swfUploadLoaded() {
	document.getElementById("ooalert").innerHTML = "";
	document.getElementById("ooalert").style.display = "none";
	document.getElementById("ooform").style.display = "block";
	document.getElementById("btnDelFileQ").style.display = "inline";
	document.getElementById("btnDelFilesQ").style.display = "inline";
	document.getElementById("btnSubmit").style.display = "inline";
	document.getElementById("btnCancel").style.display = "inline";
	document.getElementById("btnSubmit").onclick = doSubmit;
		
		var clOrderTitleDef = "";
		var grabvmname  = document.getElementById("grabvmname");

		if (grabvmname != null) {
		clOrderTitleDef = grabvmname.innerHTML;
		document.getElementById("h2title").innerHtml = "Онлайн заказ на " + clOrderTitleDef;
		}
	EnableButtons();
	//document.getElementById("ooform").style.padding = "10px 0 10px 10px";
	//document.getElementById("ooform").style.border = "border: 1px solid #ccc";

	

};

function validateForm() {
if (document.getElementById("clContact").value === "") {
	alert("Пожалуйста укажите имя контактного лица!");
	return false;
	}
if (document.getElementById("clEmail").value === "") {
	alert("Пожалуйста укажите e-mail контактного лица! "
	+"При неправильно введённом e-mail мы не сможем обработать вашу заявку!");
	return false;
	}
if (document.getElementById("clPhones").value === "") {
	alert("Пожалуйста укажите ваши телефоны для связи!");
	return false;
	}
return true;
};

function doSubmit(e) {
	e = e || window.event;
	if (e.stopPropagation) {
		e.stopPropagation();
	}
	e.cancelBubble = true;
	
	if (validateForm() == true) {
	try {
		DisableButtons();
		if (swfu.getStats().files_queued != 0) {
		swfu.startUpload();
		} else {
		if (confirm("Вы отправляете заявку без прикреплённых файлов, продолжить?") == false) {
		return;
		}
		sendorder(false);
		}
	} catch (ex) {
	}
	}
	return false;
};

function uploadStart(file) {
var mylogger = document.getElementById("ooalert1");
mylogger.style.display = "block";
mylogger.innerHTML = "<span style=\"font-size:120%; color: #c52436;\">"+
" загрузка файла " + file.name + "</span>";

};

function uploadDone() {
	try {
		sendorder(true);
		re.options.length = 0;
	} catch (ex) {
		alert("Ошибка при отправке заявки! Пожалуйста проверьте соединение с интернет.");
	}
};
function SendMore() {
             document.getElementById("ooform").style.display = "block";
             document.getElementById("oobutons").style.display = "block";
             document.getElementById("ooresponse").style.display = "none";
			 document.getElementById("ooresponse").innerHTML = "";
			 document.getElementById("clOrderTitle").value=clOrderTitleDef;
			 document.getElementById("clOrderText").value=clOrderTextDef;
			 fileslist = new Array();
};
function CloseForm() {
document.getElementById("ooresponse").style.display = "none";
document.getElementById("oocontrol").style.display = "block";
};
function OpenForm() {
document.getElementById("oocontrol").style.display = "none";
SendMore();
};

function sendorder(isfiles) {
	 if(!this.http){
         this.http = get_http();
     }
     if (this.http) {
	      var http = this.http;
         url = "/index.php?option=com_os&view=oo_msg&format=raw";
         http.open("POST", url, true);
		 http.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
         http.onreadystatechange = function()
         {
           if (http.readyState == 4)
           {
             document.getElementById("ooform").style.display = "none";
             document.getElementById("oobutons").style.display = "none";
             document.getElementById("ooresponse").style.display = "block";
			 document.getElementById("ooresponse").innerHTML = http.responseText;
			 document.getElementById("ooalert1").style.display = "none";
			EnableButtons();
           }
           else
           {
		document.getElementById("ooalert1").style.display = "block";
		document.getElementById("ooalert1").innerHTML = "<span style=\"font-size:120%; color: #c52436;\">"+
		"Регистрация заказа на сервере Фастпринт<br />подождите пожалуйста несколько секунд...</span>";
		   }
         };
		 var urlenc = s1+"="+s2+"&akey="+akey+
		 "&clName="+base64(document.getElementById("clName").value)+
		 "&clContact="+base64(document.getElementById("clContact").value)+
		 "&clEmail="+base64(document.getElementById("clEmail").value)+
		 "&clPhones="+base64(document.getElementById("clPhones").value)+
		 "&clOrderTitle="+base64(document.getElementById("clOrderTitle").value)+
		 "&clOrderText="+base64(document.getElementById("clOrderText").value);
		 if (isfiles == true) {
		 urlenc = urlenc + "&files="+fileslist.toString();
		 }
		 http.send(urlenc);
     }
 };
function deltmpremote() {
	 if(!this.http){
         this.http = get_http();
     }
     if (this.http) {
	      var http = this.http;
         url = "index.php?option=com_os&view=oo_deltmp&format=raw";
         http.open("POST", url, true);
		 http.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
         http.onreadystatechange = function()
         {
           if (http.readyState == 4)
           {

           }
           else
           {}
         };
		 var urlenc = s1+"="+s2+"&akey="+akey;
		 http.send(urlenc);
     }
 };
function cancelSelectedFile(triggerEvent) {
		if (re.options.length === 0) {
			alert("Перед тем как удалять файлы их надо сначала добавить :)");
			return;
		};
		if (re.selectedIndex === -1) {
			alert("Выберите файл для удаления!");
			return;
		};
		var file_id = re.value;
		swfu.cancelUpload(file_id, triggerEvent);
		re.options[re.selectedIndex] = null;
	};
function cancelAllFiles(triggerEvent) {
		if (re.options.length === 0) {
			return;
		}
		while (swfu.getStats().files_queued !== 0) {
		swfu.cancelUpload();
		}
		re.options.length = 0;
	};	

function fileQueueError(file, errorCode, message)  {
	try {
		// Handle this error separately because we don't want to create a FileProgress element for it.
		EnableButtons();
		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
			alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
			return;
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			alert("Файл с именем " + file.name + " слишком большой\n Разделите его на меньшие части с помощью архиватора\n или используйте ftp сервер для его загрузки.");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			alert("The file you selected is empty.  Please select another file.");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			alert("The file you choose is not an allowed file type.");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}
	} catch (e) {
	}
};

function fileQueued(file) {
	try {
			var queueString = "(" +(Math.ceil(((file.size/1024)/1024)*1000))/1000+" MByte) имя файла: "+file.name;
			var i;
			for (i=0; i<re.options.length; i++)
					{
					if (re.options[i].text === queueString)
							{
								swfu.cancelUpload(re.options[i].value, true);
								alert("Файл с таким именем уже есть в списке отправки1");
								return;
							}
					}
			re.options[re.options.length] = new Option(queueString, file.id);
	} catch (e) {
	}
};



function uploadProgress(file, bytesLoaded, bytesTotal) {

	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
		
		for (var i=0; i<re.options.length; i++)
		{
		if (re.options[i].value === file.id)
				{
					re.options[i].text = "загружено: " + percent+"% - (" + (Math.ceil(((bytesLoaded/1024)/1024)*1000))/1000+" MByte из "+
					(Math.ceil(((bytesTotal/1024)/1024)*1000))/1000+" MByte) имя файла: "+file.name;
					document.getElementById("ooalert1").innerHTML = "<span style=\"font-size:120%; color: #c52436;\">"+
					" загрузка файла " + file.name + "<br />загружено: " + percent+"% - (" + (Math.ceil(((bytesLoaded/1024)/1024)*1000))/1000+" MByte из "+
					(Math.ceil(((bytesTotal/1024)/1024)*1000))/1000+" MByte)</span>";
					return;
				}
		}
	} catch (e) {
	}
};

function uploadSuccess(file, serverData) {
	try {
		if ((serverData === "") || (serverData.slice(0,9) !== "upload_ok")) {
			this.customSettings.upload_successful = false;
					for (var i=0; i<re.options.length; i++)
						{
						if (re.options[i].value === file.id)
								{
									re.options[i].text = "ошибка загрузки файла: " + file.name + " ответ сервера" + serverData;
									break;
								}
						}
			alert("Во время загрузки файла '"+file.name+"' возникли проблемы,\n"+
			"Ответ сервера: "+serverData);
			EnableButtons();
		while (swfu.getStats().files_queued !== 0) {
		swfu.cancelUpload();
		}
			re.options.length = 0;
			document.getElementById("ooalert1").style.display = "none";
			deltmpremote();
		} else {
			fileslist.push(serverData.slice(9));
			this.customSettings.upload_successful = true;
					document.getElementById("ooalert1").innerHTML = "<span style=\"font-size:120%; color: #c52436;\">"+
					" загрузка файла " + file.name + "<br />загружено: 100%</span>";
					for (var i=0; i<re.options.length; i++)
						{
						if (re.options[i].value === file.id)
								{
									re.options[i] = null;
									//re.options[i].text = "загружено: 100% - (" + (Math.ceil(((file.size/1024)/1024)*1000))/1000+" MByte) имя файла: "+file.name;
									return;
								}
						}
		}
	} catch (e) {
	}
};

function uploadComplete(file) {
	try {
		if (this.customSettings.upload_successful) {
		if (this.getStats().files_queued === 0) {

			uploadDone();
		} else {	
			this.startUpload();
		}


		} else {
			
		if (re.options.length === 0) {
		return;
		}
		while (swfu.getStats().files_queued !== 0) {
		swfu.cancelUpload();
		}
		re.options.length = 0;
		EnableButtons();


		}
	} catch (e) {
	}
};
function EnableButtons() {
			swfu.setButtonDisabled(false);
			document.getElementById("btnDelFileQ").disabled = false;
			document.getElementById("btnDelFilesQ").disabled = false;
			document.getElementById("btnSubmit").disabled = false;
			document.getElementById("btnCancel").disabled = true;
};
function DisableButtons() {
			 swfu.setButtonDisabled(true);
			document.getElementById("btnDelFileQ").disabled = true;
			document.getElementById("btnDelFilesQ").disabled = true;
			document.getElementById("btnSubmit").disabled = true;
			document.getElementById("btnCancel").disabled = false;
};

function uploadError(file, errorCode, message) {
	try {
		EnableButtons();
		re.options.length = 0;
		while (swfu.getStats().files_queued !== 0) {
		swfu.cancelUpload();
		}
		if (errorCode === SWFUpload.UPLOAD_ERROR.FILE_CANCELLED) {
			// Don't show cancelled error boxes
			return;
		}
		
		deltmpremote();
		
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
			alert("There was a configuration error.  You will not be able to upload a resume at this time.");
			this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			alert("You may only upload 1 file.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			break;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			//progress.setStatus("Upload Error");
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
			//progress.setStatus("Upload Failed.");
			this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
			//progress.setStatus("Server (IO) Error");
			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
			//progress.setStatus("Security Error");
			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			//progress.setStatus("Upload Cancelled");
			this.debug("Error Code: Upload Cancelled, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			//progress.setStatus("Upload Stopped");
			this.debug("Error Code: Upload Stopped, File name: " + file.name + ", Message: " + message);
			break;
		}
	} catch (ex) {
	}
};

