function ShowProgress(dsLink) {
	window.showModelessDialog(dsLink + '&b=IE',null, "dialogWidth=375px; dialogHeight:130px; center:yes");
	return true;
}

function dsReplaceChar(dsString, dsChar1, dsChar2) {
	var dsNewString = "";
		
	for (i = 0; i < dsString.length; i++)
		if (dsString.charAt(i) == dsChar1)
 			dsNewString += dsChar2
		else
 			dsNewString += dsString.charAt(i)
		
	return dsNewString
}

function dsEndSymbol(dsNum, g) {
	for (i = 0; i < g.length-1; i++) {
		if (g.elements[i].type == 'button' && g.elements[i].name == ('End' + dsNum)) { 
			if (g.elements[i-1].type == 'button') {
				g.elements[i-2].value += '\nº';
				g.elements[i-2].focus();
			}
			else {
				g.elements[i-1].value += '\nº';
				g.elements[i-1].focus();
			}
			return true;
		}
	}
	return true;
}

function dsValidateLink(dsString) {
	if (dsString == '') 
		return true;
    if (dsString.indexOf('http://') == -1)
          return false;

    return true;
} 

function dsValidateString(dsString, dsRegExp) {
	return !dsRegExp.test(dsString)
} 

function dsValidateEmail(dsString) {
	if (dsString == '') 
		return true;

    if (dsString.indexOf('@') == -1 || dsString.indexOf('.') == -1)
          return false;

    return true;
} 
		
function dsValidateImage(dsString) {
    if (dsString != '')
	    if (dsString.indexOf('.gif') == -1 && dsString.indexOf('.jpg') == -1)
	          return false;

    return true;
} 

function dsValidateNumber(dsString, dsChars) {
    for (var i = 0; i < dsString.length; i++) {
       if (dsChars.indexOf(dsString.charAt(i)) == -1)
          return false;
    }
    return true;
} 
		
function dsExtractField(dsString, dsType) {
	var dsTemp = '';

	if (dsString.indexOf('º') > -1) {
		dsString = dsString.split('º');
	}

	return dsString[dsType];
}

function dsCheckImages(g) {
	dsFlag = false;
	for (i = 0; i < g.length-1; i++) {
		dsFieldsType = dsExtractField(g.elements[i].name, 1);
		dsFieldsValue = g.elements[i].value;

		if ((dsFieldsType == 'file' || dsFieldsType == 'image') && dsFieldsValue != '')
		dsFlag = true;
	}

	return dsFlag;
}	

function dsAutoComplete (g, dsTitle) {
	var dsFTextIndex = 0;

	for (i = 0; i < g.length-1; i++) {
		dsFieldsRequired = dsExtractField(g.elements[i].name, 0);
		dsFieldsType = dsExtractField(g.elements[i].name, 1);
		dsFieldsTitle = dsExtractField(g.elements[i].name, 2);
		dsFieldsValue = g.elements[i].value;

		switch (dsFieldsType) {
			case "ftext":
			    dsTest = eval(g.dsTextbox + dsFTextIndex);
				dsFillerText = new Array();
				dsFillerText[0] = "Eu massa a elit tempor fermentum. Etiam vel tortor non arcu vestibulum fringilla. Morbi nunc. Aliquam aliquet. Donec non eros. Nam at mauris. Aenean turpis. Donec tristique sodales lectus. Sed ligula augue, tempus et, accumsan id, pretium id, justo. Integer auctor, ipsum nec gravida pretium, nisl arcu porta urna, sed varius leo augue vel metus. Nam aliquam felis non mauris. Duis diam est, faucibus non, rutrum at, pharetra at, lorem. Sed ligula tortor, consectetuer sit amet, condimentum vel, tempus id, nibh. Vestibulum lobortis consectetuer pede. Duis non orci non mauris dignissim tincidunt. Nunc mollis vestibulum dui. Nullam sed mauris a ante tempus faucibus.";
				dsFillerText[1] = "Donec sed mauris eu ligula adipiscing pellentesque. Aliquam erat volutpat. Duis at lectus nec ante vestibulum fermentum. Proin interdum risus mattis metus. Ut bibendum. Maecenas vestibulum ultricies magna. Ut feugiat. Donec condimentum bibendum sem. Nunc sollicitudin. Ut condimentum cursus elit. Vestibulum ac diam sed felis condimentum aliquam. Donec luctus purus quis neque pharetra feugiat. Sed neque. Morbi odio ipsum, elementum quis, commodo vitae, sodales pharetra, nisl. Quisque risus leo, tristique ac, eleifend at, ornare quis, nibh. Maecenas sit amet ligula. In tincidunt, est at posuere cursus, leo velit volutpat augue, ut commodo turpis orci sed quam.";
				dsFillerText[2] = "Vivamus adipiscing nulla nec augue. Vivamus eu erat vel massa elementum interdum. Curabitur pede lectus, suscipit eu, dignissim id, consectetuer nec, turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam tempor. Morbi leo. Quisque vel nulla. In turpis libero, lacinia at, fringilla eu, fermentum id, justo. Maecenas quis risus non ante hendrerit fringilla. Cras non dui. Nullam tempus enim quis tortor. Nulla purus augue, vestibulum sed, varius id, porttitor eget, ipsum. Phasellus nunc lectus, laoreet et, pulvinar sed, eleifend at, lorem. Phasellus velit orci, accumsan ac, pharetra nec, tempus quis, orci. Integer vestibulum dui non tortor.";
				dsFillerText[3] = "Donec vulputate leo eu sapien. Praesent facilisis pede sit amet tortor. Nunc nec lorem. Phasellus nec turpis eu risus imperdiet scelerisque. In hac habitasse platea dictumst. Cras lacinia augue nec felis. Nam eu massa a sem euismod pretium. Morbi at mauris. Sed orci. Aenean laoreet, sem non iaculis tristique, libero turpis vehicula neque, vitae aliquet magna est quis purus. Donec facilisis purus sed lorem. Etiam nec nisl. Sed aliquet nulla eu eros.";
				dsFillerText[4] = "In in sapien. Nam dapibus sem et urna. Mauris tortor metus, gravida eget, egestas ac, pellentesque nec, enim. Integer sollicitudin tortor at tortor. Sed non augue. Ut justo. Integer tincidunt tortor et pede. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed fermentum. Nunc cursus est ac magna. Proin iaculis, nibh vel vestibulum pulvinar, elit erat sagittis velit, sed luctus lorem mauris ac nulla. Morbi eget felis vel ipsum molestie luctus. In hac habitasse platea dictumst. Curabitur vel mauris et mauris consequat ultricies. Nullam ultrices porttitor diam.";

				frames[dsFTextIndex].document.body.innerHTML = dsFillerText[Math.floor(Math.random() * 5)];
				dsFTextIndex++;
			break;
			case "text": 
				g.elements[i].value = dsTitle + ' ' + dsFieldsTitle + ' ' + Math.floor(Math.random()  * 40 + 1);
			break;
			case "textarea":
				dsFillerText = new Array();
				dsFillerText[0] = "Eu massa a elit tempor fermentum. Etiam vel tortor non arcu vestibulum fringilla. Morbi nunc. Aliquam aliquet. Donec non eros. Nam at mauris. Aenean turpis. Donec tristique sodales lectus. Sed ligula augue, tempus et, accumsan id, pretium id, justo. Integer auctor, ipsum nec gravida pretium, nisl arcu porta urna, sed varius leo augue vel metus. Nam aliquam felis non mauris. Duis diam est, faucibus non, rutrum at, pharetra at, lorem. Sed ligula tortor, consectetuer sit amet, condimentum vel, tempus id, nibh. Vestibulum lobortis consectetuer pede. Duis non orci non mauris dignissim tincidunt. Nunc mollis vestibulum dui. Nullam sed mauris a ante tempus faucibus.";
				dsFillerText[1] = "Donec sed mauris eu ligula adipiscing pellentesque. Aliquam erat volutpat. Duis at lectus nec ante vestibulum fermentum. Proin interdum risus mattis metus. Ut bibendum. Maecenas vestibulum ultricies magna. Ut feugiat. Donec condimentum bibendum sem. Nunc sollicitudin. Ut condimentum cursus elit. Vestibulum ac diam sed felis condimentum aliquam. Donec luctus purus quis neque pharetra feugiat. Sed neque. Morbi odio ipsum, elementum quis, commodo vitae, sodales pharetra, nisl. Quisque risus leo, tristique ac, eleifend at, ornare quis, nibh. Maecenas sit amet ligula. In tincidunt, est at posuere cursus, leo velit volutpat augue, ut commodo turpis orci sed quam.";
				dsFillerText[2] = "Vivamus adipiscing nulla nec augue. Vivamus eu erat vel massa elementum interdum. Curabitur pede lectus, suscipit eu, dignissim id, consectetuer nec, turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam tempor. Morbi leo. Quisque vel nulla. In turpis libero, lacinia at, fringilla eu, fermentum id, justo. Maecenas quis risus non ante hendrerit fringilla. Cras non dui. Nullam tempus enim quis tortor. Nulla purus augue, vestibulum sed, varius id, porttitor eget, ipsum. Phasellus nunc lectus, laoreet et, pulvinar sed, eleifend at, lorem. Phasellus velit orci, accumsan ac, pharetra nec, tempus quis, orci. Integer vestibulum dui non tortor.";
				dsFillerText[3] = "Donec vulputate leo eu sapien. Praesent facilisis pede sit amet tortor. Nunc nec lorem. Phasellus nec turpis eu risus imperdiet scelerisque. In hac habitasse platea dictumst. Cras lacinia augue nec felis. Nam eu massa a sem euismod pretium. Morbi at mauris. Sed orci. Aenean laoreet, sem non iaculis tristique, libero turpis vehicula neque, vitae aliquet magna est quis purus. Donec facilisis purus sed lorem. Etiam nec nisl. Sed aliquet nulla eu eros.";
				dsFillerText[4] = "In in sapien. Nam dapibus sem et urna. Mauris tortor metus, gravida eget, egestas ac, pellentesque nec, enim. Integer sollicitudin tortor at tortor. Sed non augue. Ut justo. Integer tincidunt tortor et pede. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed fermentum. Nunc cursus est ac magna. Proin iaculis, nibh vel vestibulum pulvinar, elit erat sagittis velit, sed luctus lorem mauris ac nulla. Morbi eget felis vel ipsum molestie luctus. In hac habitasse platea dictumst. Curabitur vel mauris et mauris consequat ultricies. Nullam ultrices porttitor diam.";

				g.elements[i].value = dsFillerText[Math.floor(Math.random() * 5)];
			break;
			case "zipcode":
				dsFillerText = "";
				for (j = 0; j < 5; j++)
					dsFillerText = dsFillerText + Math.floor(Math.random() * 8);
				g.elements[i].value = dsFillerText;
			break;
			case "phone":
				dsFillerText = "";
				for (j = 0; j < 4; j++)
					dsFillerText = dsFillerText + Math.floor(Math.random() * 10);
				g.elements[i].value = "555-555-" + dsFillerText;
			break;
			case "email":
				g.elements[i].value = "info" + Math.floor(Math.random() * 5+1) + "@emailaddress.com";
			break;
			case "username":
				g.elements[i].value = "admin" + Math.floor(Math.random() * 5+1);
			break;
			case "password":
				g.elements[i].value = "testcase";
			break;
			case "list":
				dsFillerText = "";
				for (j = 0; j < 8; j++)
					dsFillerText = dsFillerText + "º This is feature " + Math.floor(Math.random() * 40 + 1) + "\n";
				g.elements[i].value = dsFillerText;
			break;
			case "link":
				dsFillerText = new Array();
				dsFillerText[0] = "http://www.i4.net";
				dsFillerText[1] = "http://www.google.com";
				dsFillerText[2] = "http://www.msn.com";
				dsFillerText[3] = "http://www.yahoo.com";

				g.elements[i].value = dsFillerText[Math.floor(Math.random() * 4)];
			break;
			case "date":
				g.elements[i].value = Math.floor(Math.random() * 12 + 1) + "/" + Math.floor(Math.random() * 28 + 1) + "/" + Math.floor(Math.random() * 5 + 1999);
			break;
			case "dropdown":
				g.elements[i].options[Math.floor(Math.random() * g.elements[i].length)].selected = true;
			break;
			case "image":
				g.elements[i].options[Math.floor(Math.random() * g.elements[i].length)].selected = true;
			break;
		}		
	}
}

function dsCheckValid(g) {
	var dsFTextIndex = 0;
	
	for (i = 0; i < g.length-1; i++) {
		dsFieldsRequired = dsExtractField(g.elements[i].name, 0);
		dsFieldsType = dsExtractField(g.elements[i].name, 1);
		dsFieldsTitle = dsExtractField(g.elements[i].name, 2);
		dsFieldsValue = g.elements[i].value;
	
		if (dsFieldsType == 'ftext') {
			g.elements[i].value = frames[dsFTextIndex].document.body.innerHTML;
			dsFTextIndex++;
		}
		else if (dsFieldsType == 'link' && !dsValidateLink(dsFieldsValue)) {
			alert("Please enter a valid link.");
			g.elements[i].focus();
			return false;
		}					
		else if (dsFieldsType == 'username' && !dsValidateString(dsFieldsValue, /[^a-z\d ]/i)) {
			alert("Please enter a valid username.");
			g.elements[i].focus();
			return false;
		}					
		else if (dsFieldsType == 'number' && !dsValidateNumber(dsFieldsValue, "0123456789.- ")) {
			alert("Please enter a valid number.");
			g.elements[i].focus();
			return false;
		}
		else if (dsFieldsType == 'email' && !dsValidateEmail(dsFieldsValue)) {
			alert("Please enter a valid email address.");
			g.elements[i].focus();
			return false;
		}
		else if (dsFieldsType == 'phone' && !dsValidateNumber(dsFieldsValue, "0123456789.()- ")) {
			alert("Please enter a valid phone number.");
			g.elements[i].focus();
			return false;
		}
		else if (dsFieldsType == 'zipcode' && !dsValidateNumber(dsFieldsValue, "0123456789- ")) {
			alert("Please enter a valid zipcode.");
			g.elements[i].focus();
			return false;
		}
		else if (dsFieldsType == 'state' && dsFieldsValue == 'default') {
			alert("Please select a state.");
			g.elements[i].focus();
			return false;
		}
		
		if (dsFieldsRequired == "yes") {
			if (dsFieldsValue == "") {
				switch (dsFieldsType) {
					case "text": 
					case "textarea":
					case "zipcode":
					case "username":
					case "password":
					case "link":
					case "list":
					case "phone":
					case "email":
					case "number":
					case "price": 
					case "date":
						alert("Please fill out entire form; field " + dsFieldsTitle + " is empty.");
						g.elements[i].focus();
						return false;
					break;
				}
			}
		}
	}
 	return true;
}