// JavaScript Document

function confirmDelete(candidate) {
		return confirm('You are about to delete a ' + candidate + ' from the system.\n\n' +
					   'This process is immediate and cannot be reversed. If you are sure\n' +
					   'this is what you want to do, click OK. Otherwise click Cancel and\n' +
					   'the ' + candidate + ' will not be deleted.');
}

function isNumeric(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

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

function generatePassword(randomLength, length, noPunction) {
    if (parseInt(navigator.appVersion) <= 3) {
        window.alert("Sorry this only works in 4.0+ browsers");
        return "";
    }
	var sPassword = '';
    if (randomLength) {
        length = Math.random();

        length = parseInt(length * 100);
        length = (length % 7) + 6
    }
    for (var i=0; i < length; i++) {
        var numI = getRandomNum();
        if (noPunction) {
			while (checkPunc(numI)) {
				numI = getRandomNum();
			}
		}
        sPassword = sPassword + String.fromCharCode(numI);
    }
    return sPassword;
}

function getRandomNum() {
    // between 0 - 1
    var rndNum = Math.random()

    // rndNum from 0 - 1000
    rndNum = parseInt(rndNum * 1000);

    // rndNum from 33 - 127
    rndNum = (rndNum % 94) + 33;
    return rndNum;
}

function checkPunc(num) {
    if ((num >=33) && (num <=47)) { return true; }
    if ((num >=58) && (num <=64)) { return true; }
    if ((num >=91) && (num <=96)) { return true; }
    if ((num >=123) && (num <=126)) { return true; }

    return false;
}

function getMonthName(month) {
	
	var retVal = ''
	
	switch (month) {
		case 0 :
			retVal = 'January';
			break;
		case 1 :
			retVal = 'February';
			break;
		case 2 :
			retVal = 'March';
			break;
		case 3 :
			retVal = 'April';
			break;
		case 4 :
			retVal = 'May';
			break;
		case 5 :
			retVal = 'June';
			break;
		case 6 :
			retVal = 'July';
			break;
		case 7 :
			retVal = 'August';
			break;
		case 8 :
			retVal = 'September';
			break;
		case 9 :
			retVal = 'October';
			break;
		case 10 :
			retVal = 'November';
			break;
		case 11 :
			retVal = 'December';
			break;
	}
	
	return retVal;
}

function getMonthNumber(monthName) {
	var retVal = ''
	
	switch (monthName) {
		case 'January' :
		case 'Jan' :
			retVal = 0;
			break;
		case 'February' :
		case 'Feb' :
			retVal = 1;
			break;
		case 'March' :
		case 'Mar' :
			retVal = 2;
			break;
		case 'April' :
		case 'Apr' :
			retVal = 3;
			break;
		case 'May' :
			retVal = 4;
			break;
		case 'June' :
		case 'Jun' :
			retVal = 5;
			break;
		case 'July' :
		case 'Jul' :
			retVal = 6;
			break;
		case 'August' :
		case 'Aug' :
			retVal = 7;
			break;
		case 'September' :
		case 'Sep' :
			retVal = 8;
			break;
		case 'October' :
		case 'Oct' :
			retVal = 9;
			break;
		case 'November' :
		case 'Nov' :
			retVal = 10;
			break;
		case 'December' :
		case 'Dec' :
			retVal = 11;
			break;
	}
	
	return retVal;
}

function checkMail(testAddress) {
	if (testAddress) {
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		/*
		JS  ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$
		PHP ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-z]{2,3})$
		*/
		return filter.test(testAddress);
	} else {
		return false;	
	}
}


var toggledOpen = false
function toggleHelpSection() {
	var targetWidth = 722;
	var targetHeight = 150;
	var aTag = $('helpToggle');
	var mailMergeSection = $('helpSection');
	if (toggledOpen) {
		targetWidth = 225;
		targetHeight = 20;
	}
	if (mailMergeSection) {
		new Rico.Effect.Size( 
			mailMergeSection,  //the mail merge instructions div id
			targetWidth,
			targetHeight,
			500, // 500ms (1/2 second)
			15, // 15 steps 
			{
				complete:function() {
					if (toggledOpen) {
						if (aTag) {
							aTag.innerHTML = 'Show Help';
						}
						Element.setStyle(mailMergeSection, {overflow:'hidden'});
					} else {
						if (aTag) {
							aTag.innerHTML = 'Hide Help';
						}
						Element.setStyle(mailMergeSection, {overflow:'scroll'});
					}
					toggledOpen = !toggledOpen;
				}
			}
		);
	}
}

function CreateBookmarkLink() {
	var strTitle;
	var strUrl;
	if (CreateBookmarkLink.arguments.length > 0) {
		strUrl = CreateBookmarkLink.arguments[0];
	} else {
		strUrl = "http://www.thingymail.co.uk/user/";
		strTitle = "ThingyMail Login";
	}
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(strTitle, strUrl, "");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite(strUrl, strTitle);
	}
}

function selectAllRegions() {
	var regionField = $('regions');
	if (regionField) {
		for(var i=0;i<regionField.length;i++) {
			//regionField[i].selected=!regionField[i].selected;
			regionField[i].selected = true;
		}
	}
}