var WDCPREP = 0xFFFE;
var WDCCHK = 0xFFFF;
function wdcCommand(idComponent,command,cmdParam,qoutes)
{
    
    var url = window.location.href;
    var rs = url.substr(url.lastIndexOf('/')+1);
    var param = '';
    var pname = 'wdccmd';
    
    if( !qoutes )
        var pvalue = idComponent + ":" + command + "('" + cmdParam + "')";
    else
        var pvalue = idComponent + ":" + command + "(" + cmdParam + ")";

    if( rs.indexOf('?') != -1 )
        param = rs.substr(rs.indexOf('?')+1)

    var found = false;
    if( param.length > 0 )
    {
        param = param.split('&');
        for(var i=0;i < param.length;i++)
            if( param[i].substr(0,pname.length+1) == (pname + '=') )
            {
                param[i] = pname + '=' + pvalue;
                found = true;
            }
    }
    else
        param = new Array();

    if( !found )
        param[param.length] = pname + '=' + pvalue;

    var paramStr = '';
    for(var i=0;i < param.length;i++)
        paramStr += param[i] + '&';

    paramStr = paramStr.substr(0,paramStr.length-1);

    if( rs.indexOf('?') != -1 )
        rs = rs.substr(0,rs.indexOf('?')+1) + paramStr;
    else
        rs = rs + '?' + paramStr;

    window.location = rs;
}

function wdcCheckDate(form, input, param1)
{
    input.value = '';

    var year     = form.elements[input.name + '_year'];
    var month    = form.elements[input.name + '_month'];
    var day      = form.elements[input.name + '_day'];
    var hour     = form.elements[input.name + '_hour'];
    var minute   = form.elements[input.name + '_minute'];

    if(! checkSelect(year,  "", param1, "Év") ) return false;
    if(! checkSelect(month, "", param1, "Hónap") ) return false;
    if(! checkSelect(day,   "", param1, "Nap") ) return false;

    if( hour )
        if(! checkSelect(hour,   "", param1, "Óra") ) return false;
    if( minute )
        if(! checkSelect(minute,   "", param1, "Perc") ) return false;

    var date_year = listGetSelectedValue(year);
    var date_month = listGetSelectedValue(month);
    var date_day = listGetSelectedValue(day);
    var date_hour = (hour != undefined) ? listGetSelectedValue(hour) : 0;
    var date_minute = (minute != undefined) ? listGetSelectedValue(minute) : 0;

    if(
        (date_year != param1) &&
        (date_month != param1) &&
        (date_day != param1) &&
        ((hour == undefined && minute == undefined) || (((hour != undefined) && date_hour != param1) && ((minute != undefined) && date_minute != param1) ) )
      )
    {
        if( (date_year > 0) && (date_month > 0) && (date_day > 0) )
        {
            if( date_hour > 0 && date_minute > 0 )
                input.value = date_year + "-" + date_month + "-" + date_day + " " + date_hour + ":" + date_minute;
            else
                input.value = date_year + "-" + date_month + "-" + date_day;
        }
        else
            input.value = '';
        return true;
    }
    else
    {
        if( (date_year == param1) || (date_month == param1) || (date_day == param1) || ((hour != undefined) && date_hour == param1) || ((minute != undefined) && date_minute == param1)  )
        {
            alert('Év / hónap / nap választása kötelező!');
            return false;
        }

        input.value = "";
        return true;
    }
}

function wdcPrepareInput(form, input, type, check, param1, param2)
{
    switch( type.toUpperCase() )
    {
        case 'SELECT'   :   if( (input.multiple) || (input.size) )
                            {
                                var scsv = form.elements['scsv_'+input.name];
                                scsv.value = listGetCSVEx(input,false,':',';');
                            }
                            break;
    }
}


function wdcCheckElement(form, input, type, check, param1, param2)
{
    switch( check )
    {
        case WDCCHK     :   switch( type.toUpperCase() )
                            {
                                case 'DATE'         :   return wdcCheckDate(form,input,param1);
                                case 'RADIOLIST'    :   return checkRadio(input,"",param1);
                                default             :   return false;
                            }

        default         :   if( check == CHK_PWDMATCH)
                                return checkPassword(input,form.elements[param1],"");

                            return checkElement(input, check, "", param1, param2);
    }
}

function wdcPostForm(formName,checkList,postCheck)
{
    var form = document.forms[formName];
    if( form )
    {
        for(var i=0;i < checkList.length;i++)
        {
            var checkInf = checkList[i];
            var input = form.elements[checkInf.name];
            var type = checkInf.type;
            if( input )
            {
                if( checkInf.check == WDCPREP )
                    wdcPrepareInput(form, input, type, checkInf.check, checkInf.param1, checkInf.param2);
                else
                    if( !wdcCheckElement(form, input, type, checkInf.check, checkInf.param1, checkInf.param2) )
                        return false;
            }
            else
                return false;
        }

        var submit = true;
        if( postCheck != undefined )
            eval('var submit = '+postCheck);

        if( submit )
            form.submit();
    }
}

function wdcDateSelectToday(formName,inputName)
{
    var form = document.forms[formName];

    if( form )
    {
        var year  = form.elements[inputName + '_year'];
        var month = form.elements[inputName + '_month'];
        var day   = form.elements[inputName + '_day'];

    	var date = new Date();
	    var date_month = date.getMonth()+1;
    	var date_day = date.getDate();

	    listSelectByValue(year,date.getFullYear());
	    listSelectByValue(month,((date_month< 10) ? "0"+date_month:date_month));
	    listSelectByValue(day,((date_day< 10) ? "0"+date_day:date_day));
	    
	    if( year.onchange )
	        year.onchange();
	    else if( month.onchange )
	             month.onchange();
	         else if( day.onchange )
	             day.onchange();
    }
}


function wdcDatePick(formName,inputName)
{
    var url = "calendar.php?method=wdcSetDate&formName="+formName+"&inputName="+inputName;

    var form = document.forms[formName];

    if( form )
    {
        var year  = form.elements[inputName + '_year'];
        var month = form.elements[inputName + '_month'];
        var day   = form.elements[inputName + '_day'];

        var data_year = listGetSelectedValue(year);
        if( data_year > 0 ) url += "&y=" + data_year;
        var data_month = listGetSelectedValue(month);
        if( data_month > 0 ) url += "&m=" + data_month;
    }

	openPopupPage(url,"DATEPICKER",182,204,"center:yes");
}

function wdcGetDate(formName,inputName)
{
    var form = document.forms[formName];
    
    var invalidvalue = "-1";

    var year     = form.elements[inputName + '_year'];
    var month    = form.elements[inputName + '_month'];
    var day      = form.elements[inputName + '_day'];
    var hour     = form.elements[inputName + '_hour'];
    var minute   = form.elements[inputName + '_minute'];

    if(! checkSelect(year,  undefined, invalidvalue) ) return false;
    if(! checkSelect(month, undefined, invalidvalue) ) return false;
    if(! checkSelect(day,   undefined, invalidvalue) ) return false;

    if( hour )
        if(! checkSelect(hour,   undefined, invalidvalue) ) return false;
    if( minute )
        if(! checkSelect(minute,   undefined, invalidvalue) ) return false;

    var date_year = listGetSelectedValue(year);
    var date_month = listGetSelectedValue(month);
    var date_day = listGetSelectedValue(day);
    var date_hour = (hour != undefined) ? listGetSelectedValue(hour) : 0;
    var date_minute = (minute != undefined) ? listGetSelectedValue(minute) : 0;

    if(
        (date_year != invalidvalue) &&
        (date_month != invalidvalue) &&
        (date_day != invalidvalue) &&
        ((hour == undefined && minute == undefined) || (((hour != undefined) && date_hour != invalidvalue) && ((minute != undefined) && date_minute != invalidvalue) ) )
      )
    {
        if( (date_year > 0) && (date_month > 0) && (date_day > 0) )
        {
            if( date_hour > 0 && date_minute > 0 )
                return(date_year + "-" + date_month + "-" + date_day + " " + date_hour + ":" + date_minute);
            else
                return(date_year + "-" + date_month + "-" + date_day);
        }
    }
    else
    {
        if( (date_year == invalidvalue) || (date_month == invalidvalue) || (date_day == invalidvalue) || ((hour != undefined) && date_hour == invalidvalue) || ((minute != undefined) && date_minute == invalidvalue)  )
            return false;
    }

    return "";
}

function wdcSetDate(formName,inputName,date)
{
    var form = document.forms[formName];

    if( form )
    {
        var year  = form.elements[inputName + '_year'];
        var month = form.elements[inputName + '_month'];
        var day   = form.elements[inputName + '_day'];
        
        if(date instanceof Date)
        {
        	var date_year = date.getFullYear();
        	var date_month = date.getMonth()+1;
        	date_month = date_month.toString();
        	date_month = date_month.lpad(2,'0');
        	var date_day = date.getDate();
        	date_day = date_day.toString();
        	date_day = date_day.lpad(2,'0');
        }
        else
        {
        	var date_year = date.substr(0,4);
        	var date_month = date.substr(5,2);
        	var date_day = date.substr(8,2);
        }

	    listSelectByValue(year,date_year);
	    listSelectByValue(month,date_month);
	    listSelectByValue(day,date_day);

	    if( year.onchange )
	        year.onchange();
	    else if( month.onchange )
	             month.onchange();
	         else if( day.onchange )
	             day.onchange();
    }
}


//*****************************************************************************************************************************//

function WDCObject(type,id)
{
    this.type = type;
    this.id = id;
}

WDCObject.prototype =
{
    init: function()
    {
    }
}

function extend(subclass, superclass)
{
   function Dummy() {}
   Dummy.prototype = superclass.prototype;
   subclass.prototype = new Dummy();
   subclass.prototype.constructor = subclass;
   subclass.superclass = superclass;
   subclass.superproto = superclass.prototype;
}

function wdcCreateComponent(type,id,className)
{
    if( className != undefined )
    {
        eval("extend(WDCObject,"+className+");");
        eval("var component = new "+className+"(type,id);");
    }
    else
        var component = new WDCObject(type,id);

    addEvent(window,'load',component,'init');

    return component;
}