﻿// ****
Array.prototype.containsValue  = function(_value)
{
	// ****
	var rValue = false;

	// ****
	var i;

	// ****
	for(i in this)
	{
		if(this[i] === _value)
		{
    rValue = true;
			break;
		}
	}
	
	// ****
	return rValue;
}

// ****	
Array.prototype.containsKey  = function(_value)
{
	// ****
	var rValue = false;

	// ****
	var i;

	// ****
	for(i in this)
	{
		if(i === _value)
		{
    rValue = true;
			break;
		}
	}

	// ****	
	return rValue;
}

// ****
function _repeat()
{
	// ****
	var rValue;

	// ****
	var numArgs = arguments.length;
	var tmp     = "";
	var str     = "";
	var pad     = new Array();
	var i;
	var iMax    = 1;

	// ****
	switch(numArgs)
	{
		case 1 :
			iMax = 1;
			str  = arguments[0].toString();
			break;
		case 2 :
			iMax = isNaN(arguments[0]) ? iMax : parseInt(arguments[0]);
			str  = arguments[1].toString();
			break;
	}

	// ****
	for(i = 0; i < iMax; i++)
	{
		pad.push(str)
	}

	// ****
	tmp    = pad.join("");
	rValue = tmp;

	// ****
	return rValue;
}

// ****
String.prototype.repeat = _repeat;

// ****
String.prototype.trim = function()
{
    // ****
	var rValue;
	
	// ****
	var re;
	var tmp;
	
	// **** 
	re  = /(^\s*)|(\s*$)/g;
	tmp = this.replace(re, "");
	
	// ****
	rValue = tmp;
	tmp    = null;
	
	// ****
	return rValue;
}

// ****
String.prototype.empty = function()
{
    // ****
	var rValue;
	
	// ****
	rValue = ((this == "") && (this.length == 0));
	
	// ****
	return rValue;
}

// *****
function _getSelectedOption(_o)
{
	// ****
	var rValue;
	
	// ****
	var i, iMax;
	
	// ****
	rValue = null;
	
	// ****
	if( _o.tagName.toUpperCase() == "SELECT")
	{
		// ****
		iMax = _o.options.length;
		
		// ****
		if( (iMax > 0) && (_o.selectedIndex > 0) )
		{
			rValue = _o.options[_o.selectedIndex];	
		}
	}
	
	// ****
	return rValue;	
}

// ****
String.prototype.noBlankChar = function()
{
    // ****
	var rValue = this;
	
	// ****
	re = /[ ]+/gi 
	
	// ****
	rValue = ( this.trim().empty() ) ? this : this.replace(re, "");
	
	// ****
	return rValue;
}

// ****
function _selectedValue(_o)
{
	// ****
	var rValue;
	
	// ****
	var option;
	
	// ****
	rValue = null;
	option = _getSelectedOption(_o);
	
	// ****
	if( isNotNull(option) )
	{
		rValue = option.value;
	}
	
	// ****
	return rValue;	
}

// ****
function _selectedText(_o)
{
	// ****
	var rValue;
	
	// ****
	var option;
	
	// ****
	rValue = null;
	option = _getSelectedOption(_o);
	
	// ****
	if( isNotNull(option) )
	{
		rValue = option.text;
	}
	
	// ****
	return rValue;	
}


// ****
function isNull(_o)
{
	// ****
	var rValue = true;
	
	// ****
	rValue = (_o === null);
	
	// ****
	return rValue;
}

// ****
function isNotNull(_o)
{
	// ****
	var rValue = true;

	// ****
	rValue = (!isNull(_o));

	// ****
	return rValue;
}

// ****
function getEl(_id)
{
	// ****
	var rValue = null;
	
	// ****
	var tmp;
	
	// ****
	tmp = window.document.getElementById(_id);
	
	// ****
	rValue = tmp;
	tmp    = null;
	
	// ****
	return rValue;
}

// ****
function getCol(_name)
{
	// ****
	var rValue = null;
	
	// ****
	var tmp;
	
	// ****
	tmp = window.document.getElementsByName(_name);
	tmp = (tmp.length > 0) ? tmp : null;
	
	// ****
	rValue = tmp;
	tmp    = null;
	
	// ****
	return rValue;
}

// ****
function getColByTagName(_name)
{
	// ****
	var rValue = null;

	// ****
	var tmp;

	// ****
	tmp = window.document.getElementsByTagName(_name);
	tmp = (tmp.length > 0) ? tmp : null;

	// ****
	rValue = tmp;
	tmp    = null;

	// ****
	return rValue;
}

// ****
function isValidFormatDate(_date)
{
	// ****;
	var rValue = false;
	
	// ****
	var re = /^(0?[1-9]|[12]\d|3[0-1])([/])(0?[1-9]|1[0-2])\2(20\d\d)$/;
	
	// ****
	_date  = _date.noBlankChar();
	rValue = (!_date.trim().empty() && re.test(_date) );
	
	// ****;
	return rValue;
}

// ****
function isBisextilDate(_month, _year)
{

	//****
	var rValue;
	
	//****
	var tmp;
	
	//****
	_month = parseInt(_month);
	_year  = parseInt(_year);
	tmp    = true;
	
	// ****
	if(_month == 2)
	{
		tmp = ((0 == (_year % 4)) && (0 != (_year % 100))) || (0 == (_year % 400));
		
	}
	
	// ****
	rValue = tmp;
	
	// ****
	return rValue;
}

// ****
function isValidDate(_date)
{
	// ****;
	var rValue = true;
	
	// ****
	var year;
	var month;
	var date;
	var isBisextilYear;
	var maxDateInMonth;
	
	// ****
	
	_date          = _date.noBlankChar().split("/");
	year           = parseInt(_date[2]);
	month          = parseInt(_date[1]) - 1;
	date           = parseInt(_date[0]);
	isBisextilYear = isBisextilDate(month, year);
	maxDateInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	// ****
	maxDateInMonth[1] = ( isBisextilYear ) ? maxDateInMonth[1] + 1 : maxDateInMonth[1];
	
	// ****
	rValue = (date > 0) && (date <= maxDateInMonth[month]);
	
	// ****;
	return rValue;
}

// ****
function isValidTel(_tel)
{
	// ****;
	var rValue = false;

	// ****
	var tel;
	var re;
	var isValidNumber;
	
	// ****
	tel           = _tel.noBlankChar();
	re            = /^([0-9]{10}|00[0-9]{11}|[+][0-9]{11})$/;
 	isValidNumber = re.test(tel);

	// ****
	rValue = isValidNumber;
    re     = null;
    
	// ****;
	return rValue;
}

function isDateAbove(_date)
{
	// ****;
	var rValue = true;

	// ****
	var d0;
	var d1;
	var year;
	var month;
	var date;
	var isBisextilYear;
	var maxDateInMonth;

	// ****
    _date = _date.noBlankChar().split("/");
	year  = parseInt(_date[2]);
	month = parseInt(_date[1]) - 1;
	date  = parseInt(_date[0]);
	d0    = new Date();
	d0    = new Date(d0.getFullYear(), d0.getMonth(), d0.getDate())
	d1    = new Date(year, month, date);
	/*
	alert(year + "\n" + month + "\n" + d0.getDate())
	alert(d0.getYear() + "\n" + d0.getMonth() + "\n" + date)
	alert(d1.getYear() + "\n" + d1.getMonth() + "\n" + d1.getDate())
	alert(Date.parse(d1) + "\n" + Date.parse(d0))*/
	// ****
    rValue =  (Date.parse(d1) >= Date.parse(d0));

	// ****;
	return rValue;
}


// ****
function openCalendar(_url, _name, _args)
{
	// ****
	var sUrl;
	var sNamee;
	var sConf;
	
	// ****
	
	
}


// ****
function fs(_uri, _name, _args)
{
	// ****
	OPOPUP = null;

	// ****
	var oPopup;
	var conf;
	var k;
	var tmp;
	var sUri;
	var sName;
	var sConf;


	// ****
	conf = new Array();
	tmp  = new Array();


	// ****
	conf["top"]         = 0;
	conf["left"]        = 0;
	conf["height"]      = 200;
	conf["width"]       = 390;
	conf["directories"] = 0;
	conf["location"]    = 0;
	conf["menubar"]     = 0;
	conf["resizable"]   = 0;
	conf["scrollbars"]  = 1;
	conf["status"]      = 0;
	conf["titlebar"]    = 0;
	conf["toolbar"]     = 0;

	// ****
	for(k in conf)
	{
		tmp.push(k + "=" + conf[k]);
	}

	// ****
	sUri  = _uri + "?" + _args.trim();
	sName = _name;
	sConf = tmp.join(",");

	// ****
	oPopup = window.open(sUri, sName, sConf);
	oPopup.focus();
}
