function getObj(objId)
{
	if (document.getElementById)
		return document.getElementById(objId);
	else if (document.all)
	    return document.all[objId];
	else if (document.layers)
	    return document.layers[objId];
	else return false;
}

function isEmail(who) {
	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
	return(email.test(who));
}

var error_email_msg='??? e-mail';
function check_email(email)
{
	if(isEmail(email.value) == false)
	{
		email.value=error_email_msg;
		email.focus();
		return false;
	}
	return true;
}


function check_requiredinput(frm)
{
	prefix='chk_';

	var input_count=(frm.all.tags("INPUT"))?frm.all.tags("INPUT").length:0;
	input_count+=(frm.all.tags("TEXTAREA"))?frm.all.tags("TEXTAREA").length:0;
	input_count+=(frm.all.tags("SELECT"))?frm.all.tags("SELECT").length:0;

	var re='/'+prefix+'/i';
	var email=/email/;

	var first_input=null;

	this.alertfunc=function(input)
	{
		if(input.name.match(eval(email)))
		{
			if (!check_email(input))
			{
				if(!first_input) first_input=input;
				return false;
			}
			
			return true;
		}
		else if(input.name.match(eval(re)) && ((input.value == '') || (input.value == '???')))
		{
			alert_str='???';

			input.value=alert_str;

			if(!first_input) first_input=input;
			return false;
		}

		return true;
	}

	var retval=true;
	
	for (var i=0; i < input_count;i++)
		if(frm.all.tags("INPUT")[i]) 
			retval =retval && this.alertfunc(frm.all.tags("INPUT")[i]);

	for (var i=0; i < input_count;i++)
		if(frm.all.tags("TEXTAREA")[i])
			retval =retval && this.alertfunc(frm.all.tags("TEXTAREA")[i]);

	if(!retval) first_input.focus();

	return retval;
}



function checkDate(str)
{
        months = new Array(31,29,31,30,31,30,31,31,30,31,30,31);

        // check we only have digits and backslash characters
        for (var i=0;i<str.length;i++) {
                var c = str.substring(i, i+1)
                if ((c<"0" || c>"9") && c!="/") {
                        alert("Date "+str+" is invalid");
                        return false;
                }
        }

        // make sure we only have three components
        temp = str.split("/");

        if (temp.length!=3) {
                alert("Date "+str+" is invalid");
                return false;
        }

        var y = parseInt(temp[2]);
        var m = parseInt(temp[1]);
        var d = parseInt(temp[0]);
		

        // check the day and month values are valid
        if ((m<1) || (d<1) || (m>12) || (d>months[m-1])) {
                alert("Date "+str+" is invalid");
                return false;
        }

        if ((y%4!=0) || ((y%100==0) && (y%400!=0))) {
                if ((m==2) && (d>28)) {
                        alert("Date "+str+" is invalid");
                        return false;
                }
        }

        // check date is in range of modified Julian day number

        if ((y<1858) || (y>2132)) {
                alert("Date "+str+" is outside the valid range")
                return false;
        }

        if ((y==1858) && ((m<11) || ((m==11) && (d<16)))) {
                alert("Date "+str+" is outside the valid range")
                return false;
        }

        if ((y==2132) && ((m>8) || ((m==8) && (d>29)))) {
                alert("Date "+str+" is outside the valid range")
                return false;
        }

        return true;
}

function julianDay(year,month,day)
{
        var extra = 100.0*year+month-190002.5;
        var julian = 367.0*year;
        julian -= Math.floor(7.0*(year+Math.floor((month+9.0)/12.0))/4.0);
        julian += Math.floor(275.0*month/9.0);
        julian += day;
        julian -= 678985.5;
        julian -= 0.5*extra/Math.abs(extra);

        return julian;
}


function calanderDay(julian)
{
        var jd0 = julian+2400000.5;
        var z = Math.floor(jd0);
        var f = jd0-z;
        var a = 0.0;
        var alp = 0.0;
        if (z<2299161) {
                a = z;
        } else {
                alp = Math.floor((z-1867216.25)/36524.25);
                a = z+1.0+alp-Math.floor(alp/4.0);
        }

        var b = a+1524;
        var c = Math.floor((b-122.1)/365.25);
        var d = Math.floor(365.25*c);
        var e = Math.floor((b-d)/30.6001);

        var day = Math.floor(b-d-Math.floor(30.6001*e)+f);

        var month = 0;
        if (e<13.5) {
                month = e-1;
        } else {
                month = e-13;
        }

        var year = 0;
        if (month>2.5) {
                year = c-4716;
        } else {
                year = c-4715;
        }

        temp = new Array(3);
        temp[0] = day;
        temp[1] = month;
        temp[2] = year;

        return temp;
}

function addDate(form)
{
		
        str = form.inDay.value+'/'+form.inMonth.value+'/'+form.inYear.value;
		// direkt input text den girildiğinde str input.value olarak kullanılır
		
		// Girilen değerin legal tarih kontrolu
        if (checkDate(str)==false)
                return;

        temp = str.split("/");

        var sy = parseInt(temp[2]);
        var sm = parseInt(temp[1]);
        var sd = parseInt(temp[0]);

        ey = sy;
        em = sm;
        ed = sd;

		var ay = 0; // yıl
		var am = 0; // ay
		var aw = 0; // hafta
		var ad = 7; // gün


        ey += ay;

        // add the months
        if (am>12) {
                em += am%12;
                ey += Math.floor(am/12);
        } else {
                em += am;
        }
        if (em>12) {
                ey++;
                em -= 12;
        }

        // use julian day numbers to add weeks and days
        ej = julianDay(ey,em,ed);
        ej += (aw*7)+ad;

        end = calanderDay(ej);
		
		form.outDay.value=end[0];
		form.outMonth.value=end[1];
		form.outYear.value=end[2];

}
