// DHTML Micro API - www.quirksmode.org //

var g_openTableRowId = null;		// global variable indicates, which row in supplier or buyer is currently open
var IE = document.all ? true : false;

function getVersionIE()
{
	var version = null;

		// adjust page width in IE6
	if ( navigator.appName == "Microsoft Internet Explorer")
	{
		var regular_expression = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	
		if ( regular_expression.exec(navigator.userAgent) != null)
			version = parseFloat( RegExp.$1 );
	}

	return version;
}

	// defining array of necessary variables
function t_necessary_variable(id, title)
{
	this.id = id;
	this.title = title;
}

function getObj(name,win)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

	/* check e-mail validity */
function check_email_validity(email)
{
	var email_exp = new RegExp("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$","gi");

	return email_exp.test(email);
}

function showProcessingBox()
{
	document.getElementById("processing").style.display = 'block';
	document.getElementById("processing").focus();
	document.getElementById("processing").scrollIntoView();
}

function hideProcessingBox()
{
	document.getElementById("processing").style.display = 'none';
	//alert('end');
	//document.getElementById("processing").focus();
}

function displaySelectElements(current_element_id)
{
	var arr_selects = document.getElementsByTagName("select");

	if ( arr_selects.length == 0)
		return;

	var i, tmp_element, tmp_visibility;

	for (i=0;i<arr_selects.length;i++)
	{
		tmp_element = arr_selects[i].parentNode;
		tmp_visibility = "hidden";
	
		while ( tmp_element.tagName.toLowerCase() != "body")
		{
			if ( tmp_element.id == current_element_id)
			{
				tmp_visibility = "visible";
				break;
			}

			tmp_element = tmp_element.parentNode;
		}

		arr_selects[i].style.visibility = tmp_visibility;
	}
}

function hideSelectElements()
{
	var arr_selects = document.getElementsByTagName("select");

	if ( arr_selects.length == 0)
		return;

	for (var i=0;i<arr_selects.length;i++)
		arr_selects[i].style.visibility = "visible";
}

function wait(caption, delete_content_on_unwait)
{
	if ( arguments.length == 0)
		caption = "";

	var dialog = "waiting";

	if ( document.getElementById('waiting').style.display == 'block')
	{
		if ( document.getElementById('waiting2').style.display == 'block')
			dialog = "waiting3";
		else	dialog = "waiting2";
	}

	if ( IE == true)
		displaySelectElements(dialog);

	document.getElementById(dialog).style.display = 'block';
	document.getElementById(dialog + "box_inner").style.padding = "0px";
	document.getElementById(dialog + "box").style.width = document.getElementById(dialog + "box_inner").scrollWidth + ( IE ? 0 : 30 ) + "px";
	document.getElementById(dialog + "box_caption").innerHTML = caption;
	document.getElementById(dialog + "box_inner").style.padding = "15px";
	document.getElementById(dialog + "box_header").style.width = document.getElementById(dialog + "box").style.width;

		// determinates if content of "waitingbox_inner" should be deleted
			// note: if you call function unwait() directly from a script, you must adjust the call as well
			// this affects only the top right cancel button of the dialog
	if ( delete_content_on_unwait != undefined && delete_content_on_unwait != 0)
		document.getElementById("close_button_" + dialog + "box").onclick = function() { unwait(1); };
	else	document.getElementById("close_button_" + dialog + "box").onclick = function() { unwait(); };

	document.getElementById(dialog + "box").focus();
	document.getElementById(dialog + "box").scrollIntoView();
}

function wait_final_ajax_adjustment()
{
//alert( ( Number(document.getElementById("waitingbox").style.width.toString().replace(/\D/gi,"")) ) + " " + document.getElementById("waitingbox").style.width + " . " + document.getElementById("waitingbox_inner").scrollWidth);
	var dialog = "waiting";

	if ( document.getElementById('waiting3').style.display != 'block')
	{
		if ( document.getElementById('waiting2').style.display == 'block')
			dialog = "waiting2";
	}
	else	dialog = "waiting3";

	if ( Number(document.getElementById(dialog + "box").style.width.toString().replace(/\D/gi,"")) >= document.getElementById(dialog + "box_inner").scrollWidth)
		return;

	var tmp_padding = document.getElementById(dialog + "box_inner").style.paddingLeft;

	document.getElementById(dialog + "box_inner").style.padding = "0px";

	document.getElementById(dialog + "box").style.width = document.getElementById(dialog + "box_inner").scrollWidth + ( IE ? 0 : 30 ) + "px";
	document.getElementById(dialog + "box_inner").style.padding = "15px";
	document.getElementById(dialog + "box_header").style.width = document.getElementById(dialog + "box").style.width;
}
/**/
function unwait(delete_content_on_unwait)
{
	var dialog = "waiting";

	if ( document.getElementById('waiting3').style.display != 'block')
	{
		if ( document.getElementById('waiting2').style.display == 'block')
			dialog = "waiting2";
	}
	else	dialog = "waiting3";

	if ( IE == true)
	{
		hideSelectElements();

		if ( dialog != "waiting")
			displaySelectElements(dialog == "waiting3" ? "waiting2" : "waiting");
	}

	if ( document.getElementById(dialog) == undefined)
		return;

	document.getElementById(dialog).style.display = 'none';
	document.getElementById(dialog + "box").style.width = "100px";
	document.getElementById(dialog + "box_inner").style.width = "auto";

	if ( delete_content_on_unwait != undefined && delete_content_on_unwait != 0)
		document.getElementById(dialog + "box_inner").innerHTML = "";
}
/*
function setWaitDialogWidth(width)
{
	if ( width == "auto")
		document.getElementById("waitingbox").style.width = "auto";
	else	document.getElementById("waitingbox").style.width = width + "px";
}
*/
function forceUnwaitReloadPage(url)
{
	if ( url == undefined)
		unwait = function() { parent.document.location.reload() }
	else	unwait = function() { parent.document.location.replace(url) };
}

function getParentForm(element)
{
	var element_tag_name;

	while ( ( element_tag_name = element.tagName.toLowerCase()) != "html")
	{
		if ( element_tag_name == "form")
			return element;

		element = element.parentNode;
	}

	alert("There is no form defined!");
	return false;
}

// confirm that a user wants to carry on (often used to give users a breather before deleting an item)
function confirmSubmit(message) {
	if (!message) {
		message = "Are you sure you wish to continue?";
	} 
	var agree=confirm(message);
	if (agree) {
		return true;
	} else {
		return false;
	}
}

	// usually it is called in <body onload="setSubmitFormsByPressingEnter()">
function setSubmitFormsByPressingEnter()
{
    var forms = document.getElementsByTagName('form');

    for (var i=0;i < forms.length;i++)
	{
        var inputs = forms[i].getElementsByTagName('input');

        for (var j=0;j < inputs.length;j++)
            __addInputSubmitEvent(forms[i], inputs[j]);
    }
}

function __addInputSubmitEvent(form, input)
{
    input.onkeydown = function(e)
	{
        e = e || window.event;
        if (e.keyCode == 13)
		{
        	window.setTimeout("document." + form.name + ".submit();", 1000);
		   // form.submit();
            return false;
        }
    }
}

function displayPageInPopup(page, caption)
{
	jah(g_systemweb + page,'waitingbox_inner', 930);
	wait(caption);
}

function print_bid(id)
{
	window.open("print_bid.php?id=" + id,"print_window","width=600,height=400,scrollbars=yes,resizable=yes,status=no,toolbar=no,location=no,menubar=yes");

}

	// function detects if Flash is available or not and sends back appropriate format
function flash_or_jpg()
{
	var plgIn = 'Shockwave Flash';
  var ok=false; document.MM_returnValue = false;
  with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) {
    ok=(plugins && plugins[plgIn]);
  } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1
  	  if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash;
  	    else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir;
   	  else ok=true;
	}
	
  return ok != false ? "flash" : "jpg";
}

function getUnixTimestamp(day,month,year,hour,minute,second)
{
	hour = hour == undefined ? 0 : hour;
	minute = minute == undefined ? 0 : minute;
	second = second == undefined ? 0 : second;

	var humDate = new Date(Date.UTC(year, (month-1), day, hour, minute, second));
	return humDate.getTime()/1000;
}

function getStyleClass (className)
{
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}

	// system time, changes every minute

function DisplaySystemTime( objDate )
{
	var hours = objDate.getHours();
	var minutes = objDate.getMinutes();
	var seconds = objDate.getSeconds();

	document.getElementById("div_system_date").innerHTML = '<b>System time</b>: ' + hours + ":" + ( minutes < 10 ? "0" : "") + minutes + ":" + ( seconds < 10 ? "0" : "") + seconds;
}

function ShowSystemClock()
{
	g_system_time = new Date(g_system_time.getTime() + 10000);
	DisplaySystemTime(g_system_time);
	setTimeout("ShowSystemClock()",10000)
}

function getElementPosition(element)
{
	var x = 0, y = 0;

		// Get the element by its id
	//if ( (element = document.getElementById(element_id)) == null)
		//return false;

	while ( element != null)
	{
		x += element.offsetLeft - element.scrollLeft;
		y += element.offsetTop - element.scrollTop;

		element = element.offsetParent;
	}

	return {x:x,y:y};
}

function strip_multiline_text_fields(the_form)
{
	var i, tmp;

	for (i=0;i<the_form.elements.length;i++)
	{
		if ( the_form.elements[i].type == "text" && ( tmp = the_form.elements[i].value.match(/^[^\r\n]*/) ) != null )
			the_form.elements[i].value = tmp[0];
	}
}

function displayPDF(url)
{
	document.getElementById("waitingbox_inner").innerHTML = document.getElementById("dialog_generated_pdf").innerHTML.replace(/duplicate_id_removal_/g, "");
	document.getElementById("waitingbox_inner").style.width = "300px";
	
	document.getElementById("iframe_generated_pdf").src = url;
	wait("Download PDF");
}

function setReportDownloadLink(link_html)
{
	if ( document.getElementById("report_download_link") != undefined)
		document.getElementById("report_download_link").innerHTML = link_html;
}