function openWindow(page, name, w, h, scroll) {
	var winl = 27;
	var wint = 27;
	winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',noresizable'
	win = window.open(page, name, winprops)
	if(parseInt(navigator.appVersion) >= 4) {
		win.window.focus();
	}
	return win;
}

function openWindowR(page, name, w, h, scroll) {
	var winl = (screen.width - w) - 27;
	var wint = 27;
	winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable'
	win = window.open(page, name, winprops)
	if(parseInt(navigator.appVersion) >= 4) {
		win.window.focus();
	}
	return win;
}

function isValidFormat(input, format) {
    var val = input.value;
    var searchStr = " ";
    var replaceStr = "";
    var re = new RegExp(searchStr, "g");
    var result = val.replace(re, replaceStr);

    if(result.search(format) != -1) {
        return false;
    }
    return true;
}

function isValidEmail(input) {
    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    if(isValidFormat(input, format))
    	return false;
    else
		return true;
}

function isValidURL(input) { 
	/*
    var format = /^\s*['http://']+[\w\~\-]+(\.[\w\~\-]+)+\s*$/;
    if(isValidFormat(input, format))
    	return false;
    else
		return true;
	*/
	var val = input.value;
	if(val.indexOf('http://') == 0 && val.length > 7) {
		return true;
	}
	else if(val.indexOf('https://') == 0 && val.length > 8) {
		return true;
	}
	return false;
}

function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/gi, "");
}

function containsChars(input, chars) {
    
	if(trim(input.value) == '') {
		return false;
	}
	else {
		for(var inx = 0; inx < input.value.length; inx++) {
		   if(chars.indexOf(input.value.charAt(inx)) >= 0)
			   return true;
		}
		return false;
	}
}

function containsCharsOnly(input, chars) {
    
	if(trim(input.value) == '') {
		return false;
	}
	else {
		for(var inx = 0; inx < input.value.length; inx++) {
		   if(chars.indexOf(input.value.charAt(inx)) == -1)
			   return false;
		}
		return true;
	}
}

function isNum(input) {
    var chars = "0123456789";
    if(containsCharsOnly(input, chars))
		return true;
    else
		return false;
}

function hasNum(input) {
    var chars = "0123456789";
    if(containsChars(input, chars))
		return true;
    else
		return false;
}

function isNumComma(input) {
    var chars = ",0123456789";
    if(containsCharsOnly(input, chars))
		return true;
    else
		return false;
}

function isNumPeriod(input) {
    var chars = ".0123456789";
    if(containsCharsOnly(input, chars))
		return true;
    else
		return false;
}

function hasAlphabet(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    if(containsChars(input, chars))
		return true;
    else
		return false;
}

function isAlphabet(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    if(containsCharsOnly(input, chars))
		return true;
    else
		return false;
}

function isAlphaNum(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    if(containsCharsOnly(input, chars))
		return true;
    else
		return false;
}

function isLengthCheck(input, len) {
	var val = input.value;
	if(val.length != len)
    	return false;
    else
		return true;
}

function compFormatCheck(_compFormat) {
	var gubun = "";
	if(_compFormat.indexOf("-") > 0) {
		gubun = "-";
	}
	else if(_compFormat.indexOf("/") > 0) {
		gubun = "/";
	}
	else if(_compFormat.indexOf(".") > 0) {
		gubun = ".";
	}

	return gubun;
}

function removeChar(str, _del) {
	var temp = "";
	for(var i = 0; i < str.length; ++i) {
		var c = str.charAt(i);
   		if(c != _del)
			temp += c;
	}
   	return temp;
}

function toDisplayYear(_date, _gubun, _compFormat) {

	var Year = "";

	if(_date.length == 10) {
		if(removeChar(_compFormat.toUpperCase(), _gubun) == "YYYYMMDD") {
			Year = _date.substring(0, 4);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "MMDDYYYY") {
			Year = _date.substring(6, 10);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "DDMMYYYY") {
			Year = _date.substring(6, 10);
		}
	}
	else {
		Year = _date.substring(0, 4);
	}

	return Year;
}

function toDisplayMonth(_date, _gubun, _compFormat) {
		
	var Mon = "";

	if(_date.length == 10) {
		if(removeChar(_compFormat.toUpperCase(), _gubun) == "YYYYMMDD") {
			Mon = _date.substring(5, 7);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "MMDDYYYY") {
			Mon = _date.substring(0, 2);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "DDMMYYYY") {
			Mon = _date.substring(3, 5);
		}
	}
	else {
		Mon = _date.substring(4, 6);
	}

	return Mon;
}

function toDisplayDay(_date, _gubun, _compFormat) {
		
	var Day = "";
		
	if(_date.length == 10) {
		if(removeChar(_compFormat.toUpperCase(), _gubun) == "YYYYMMDD") {
			Day = _date.substring(8, 10);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "MMDDYYYY") {
			Day = _date.substring(3, 5);
		}
		else if(removeChar(_compFormat.toUpperCase(), _gubun) == "DDMMYYYY") {
			Day = _date.substring(0, 2);
		}
	}
	else {
		Day = _date.substring(6, 8);
	}

	return Day;
}

function checkDate(_date, compFormat) {
	var Year, Mon, Day, Date;
	var _displayDate = "";
	var gubun = compFormatCheck(compFormat);

	//if(_date == "[object]") {
    if(typeof(_date) == "object") {
		_displayDate = _date.value;
	}
	else {
		_displayDate = _date;
	}

	Year = toDisplayYear(_displayDate, gubun, compFormat);
	Mon = toDisplayMonth(_displayDate, gubun, compFormat);
	Day = toDisplayDay(_displayDate, gubun, compFormat);

	if(Year < "1971")
		return false;
	else if(Mon < "01" || Mon > "12")
		return false;
	else if(Day == "" || Day == null)
		return true;
	else if(Day < "01" || Day > "31")
		return false;

	switch(Mon) {
		case "01" :
		case "03" :
		case "05" :
		case "07" :
		case "08" :
		case "10" :
		case "12" :
			return true;
			break;
		case "04" :
		case "06" :
		case "09" :
		case "11" :
			if(Day > "30")
				return false;
			else
				return true;
			break;
		case "02" :
			if(Day > "29")
				return false;
			else if(Day == "29") {
				if(!checkMod(Year, "4", gubun))
					return false;
				else {
					if(!checkMod(Year, "100", gubun))
						return true;
					else {
						if(!checkMod(Year, "400", gubun))
							return false;
						else
							return true;
					}
				}
			}
			else
				return true;
	}
}

function gfn_CheckDate(yyyy, mm, dd) {
	var Year = yyyy;
	var Mon  = mm;
	var Day  = dd;

	if(Year < "1971")                 return false;
	else if(Mon < "01" || Mon > "12") return false;
	else if(Day == ""  || Day == null) return true;
	else if(Day < "01" || Day > "31") return false;

	switch (Mon) {
		case "01" :
		case "03" :
		case "05" :
		case "07" :
		case "08" :
		case "10" :
		case "12" :
			return true;
			break;
		case "04" :
		case "06" :
		case "09" :
		case "11" :
			if(Day > "30")  return false;
			else            return true;
			break;
		case "02" :
			if(Day > "29") 	return false;
			else if(Day == "29") {
				if(!gfn_Mod(Year, "4"))       return false;
				else {
					if(!gfn_Mod(Year, "100"))   return true;
					else {
						if(!gfn_Mod(Year, "400")) return false;
						else                      return true;
					}
				}
			}
			else                          return true;
	}
}

function gfn_Mod(a, b) {
	var compSt = "";

	compSt = String(a / b);
	index = compSt.indexOf(".");

	if(index < 0) return true;

	return false;
}