﻿var itemStatus = '';
var glDownloadId = '';
var selectedData = '';
var errorFormList = new Object();
var volumeFlag = '0';
var sysVol = [];
var volume_data = [];
var createVolData = null;
var storageProgressCliName = "";
var fromWizardInstallPage = false;
var wizardDiskPageBtnId = "";
var isNormalSystemStatus = true;
var selectedSharePath = "";
//global variables used in backup-related pages
var jobSettingPassToEdit = null;
var schedulePassToEdit = null;
var jobSettingPassToRestore = null;
var schedulePassToRestore = null;
var allJobPassToCreate = null;
var internalVolumeSettingPassToEdit = null;
var externalVolumeSettingPassToEdit = null;
var isLocalSource = false;
var isRemoteTarget = false;
//end if global variables used in backup-related pages
var selectedVolumePath = null;

//globle data used in ssl_redirect.html
var sslDialogData = new Object();
var isCsrOrCertificate = false;
var isForceHttps = false;
//end

//globle data used in backup_restore_progress_dialog.html
var isFromBackupMain = false;
var isFromRestoreByJob = false;
var isFromRestoreByTarget = false;
var restoreByJob = false;
var restoreByTarget = false;
function showErrorMessage(e) {
	var str1="", str2 = "";
	for (var i=0; i <e.length ; i++) {
		str1 = str1+"document.getElementById( '"+e[i]+"' ).style.backgroundColor='red';";
		str2 = str2+"document.getElementById( '"+e[i]+"' ).style.backgroundColor='';";
	}
	setTimeout(str1, 100);
	setTimeout(str2, 300);
	setTimeout(str1, 500);
	setTimeout(str2, 700);
}

function setAttr (feature) {
	var cmd = {};

	switch(feature){
		/** System Name **/
		case "hostName":
			cmd.required = true;
			cmd.regExpStr = "^[a-zA-Z-][\a-zA-Z0-9_-]{0,63}$";
			cmd.invalidMessage = utility.getText("The Server name contains invalid characters or is an invalid format.Server name may contain only alphanumeric characters and minus signs('-').It must begin with an alphabetic character and ends with an alphanumeric character.");
			break;
		case "description":
			cmd.required = false;
			cmd.regExpStr = "^([^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\=\*\\\"\~]+|[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\*\=\\\"\~][^\\]\/\\\\\:\|\[\<\>\+\;\,\?\*\=\\\"\~]*[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\*\=\\\"\~])$";
			cmd.invalidMessage = utility.getText("The format of Description is NOT correct!");
			break;
		case "workgroup":
			cmd.required = true;
			cmd.regExpStr = "^[a-zA-Z0-9-][\.a-zA-Z0-9_-]{0,63}$";
			cmd.invalidMessage = utility.getText("The format of Workgroup Name is NOT correct!");
			break;

		/** Date & Time **/
		case "time":
			cmd = "^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
			break;
		case "date":
			cmd = "^[0-9]{4}-(0[1-9]|1[0-2])-([0-2][0-9]|3[0-1])$";
			break;
		case "daylight-saving":
			cmd = "^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$";
			break;
		case "FQDN":
			cmd = "^[a-zA-Z0-9-][\.a-zA-Z0-9-]{0,254}$";
			break;

		/** Storage **/
		case "volume":
			cmd = "^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9._-]|[a-zA-Z0-9][a-zA-Z0-9 ._-]{0,30}[a-zA-Z0-9._-])$";
			break;

		/** Network **/
		case "IP":
			cmd = "^((([0-1]?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-1]?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))$";
			break;

		/** Media Server **/
		case "file-ext":
			cmd = "^([a-zA-Z0-9_-]([a-zA-Z0-9_-])*)$";
			break;

		/** Account **/
		case "username":
			cmd = "^([a-zA-Z]|[a-zA-Z][a-zA-Z0-9._-]|[a-zA-Z][a-zA-Z0-9 ._-]{0,30}[a-zA-Z0-9._-])$";
			//cmd = "^([^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\=\*\!\`\#\@\$%\^\&\(\)\{\}\~0-9-]|[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\=\*\!\`\#\@\$%\^\&\(\)\{\}\~0-9-][^\\]\/\\\\\:\|\[\<\>\+\;\,\?\=\*\!\`\#\@\$%\^\&\(\)\{\}\~]{0,30}[^\\] \/\\\\\:\|\[\<\>\+\;\,\?\=\*\!\`\#\@\$%\^\&\(\)\{\}\~])$";
			break;
		case "password":
			cmd = "^([a-zA-Z0-9_-][a-zA-Z0-9_-]{0,13})$";
			break;

		/** Share **/
		case "sharename":
			//cmd = "^([a-zA-Z0-9_-]{1,255}|[a-zA-Z0-9_-][a-zA-Z0-9 ._-]*[a-zA-Z0-9_-])$";
			cmd = '^([^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\=\*]+|[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\*\=][^\\]\/\\\\\:\|\[\<\>\+\;\,\?\*\=]*[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\*\=])$';
			break;
		case "path":
			//cmd = "^((\/[a-zA-Z0-9_-]|\/[a-zA-Z0-9_-][a-zA-Z0-9 ._-]*[a-zA-Z0-9._-])*)$";
			cmd = "^((\/[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\=\*]|\/[^\\]. \/\\\\\:\|\[\<\>\+\;\,\?\*\=][^\\]\/\\\\\:\|\[\<\>\+\;\,\?\*\=]*[^\\] \/\\\\\:\|\[\<\>\+\;\,\?\*\=])*)$";
			break;
		case "connectionLimit":
			cmd.min=1;
			cmd.max=30;
			cmd.invalidMessage="Connection limit should between the range 1 to 30;"
			break;
		case "idleTimeout":
			cmd.min=30;
			cmd.max=300;
			cmd.invalidMessage="Idle timeout should between the range 30 to 300;"
			break;
	}
	return cmd;
}

function setForm ( requestObj ) {

	for (elem in requestObj) {

		if( typeof dojo.widget.byId(elem)!='undefined') {
			var formElem = dojo.widget.byId(elem);

			if(typeof formElem.type!='undefined' && formElem.type == "text") {
				formElem.textbox.value=requestObj[elem];
				formElem.required=setAttr(elem).required;
				formElem.invalidSpan.innerHTML=setAttr(elem).invalidMessage;

				if (formElem.widgetType == "RegexpTextbox") {
					formElem.flags.regexp = setAttr(elem).regExpStr;
				}
				else if (formElem.widgetType == "IntegerTextbox") {
					var obj= setAttr(elem);
					//formElem.isInRange( requestObj[elem], obj );
					formElem.flags.max=setAttr(elem).max;
					formElem.flags.min=setAttr(elem).min;
				}
			}
			else if (typeof formElem.widgetType !='undefined' && formElem.widgetType == "MySelect") {
				var dataSet = new Array();
				var length = eval("requestObj."+elem+".length");

				//var selectValue = eval("requestObj."+formElem.default);
				for( var i=0; i<length; i++) {
					dataSet.push ([sprintf(formElem.MyLabel,requestObj,elem,i) , sprintf(formElem.MyValue,requestObj,elem,i) ]);
					if (sprintf(formElem.MyValue,requestObj,elem,i) == selectValue)
						var selectLabel = sprintf(formElem.MyLabel,requestObj,elem,i);
				}
				//load dynamic options
				formElem.dataProvider._data = dataSet;

				//set default value
				formElem.setAllValues(selectLabel,selectValue);
			}
			else if (typeof formElem.widgetType !='undefined' && formElem.widgetType == "Checkbox") {
				if (requestObj[elem] == "yes" || requestObj[elem] == "enable")
					formElem.setValue(true);
				else if (requestObj[elem] == "no" || requestObj[elem] == "disable")
					formElem.setValue(false);
			}
		}
	}
}

//convert the attribute string
function sprintf(str,obj,elem, index) {
	if (str.indexOf("%")!=-1) {
		var splitByComma = str.split(',');
		var arg = new Array();

		for (var j=0;j<splitByComma.length;j++) {
			if (j == 0)
				var firstPart = splitByComma[j];
			else
				arg[j-1] = splitByComma[j];
		}

		var ori_str = firstPart.split('%');
		var tran = new Array();
		var new_str = new Array();

		for(var i=1; i<arg.length+1; i++) {

			if(ori_str[i].length >1)
				new_str[i] = eval("obj."+elem+"[index]."+arg[i-1])+ori_str[i].substr(1,ori_str[i].length);
			else
				new_str[i] = eval("obj."+elem+"[index]."+arg[i-1]);
		}

		var return_str = ori_str[0];

		for(var i=1; i<ori_str.length; i++)
			return_str = return_str + new_str[i];

		return return_str;
	}
	else
		return eval("obj."+elem+"[index]."+str);
}

function isNumeric( text ) {
	var ValidChars = "0123456789";
	var isNumber = true;
	var Char;

	for( i = 0; i < text.length && isNumber == true; i++ ) {
		Char = text.charAt( i );
		if( ValidChars.indexOf( Char ) == -1 )
			isNumber = false;
	}
	return isNumber;
}
