
// Browser detection
var browserId;
if (window.XMLHttpRequest) 
{
	browserId = (navigator.appName == "Microsoft Internet Explorer") ? "IE" : "FF";
} 
else 
{
	browserId = "IE";
}
	
// Common window functions	
function winOpen(URL,name,width,height,scrollbars) {
	window.open(URL,name,"height=" + height + ",width=" + width + ",status=yes,toolbar=no,menubar=no,location=no,directories=no,scrollbars=" + scrollbars + ",resizable=no,fullscreen=no,left=" + ((screen.width/2) - (width/2)) + ",top=" + ((screen.height/2) - (height/2)) + "");
}

function ToggleMenu(id)
{	
	if (document.getElementById(id).style.display == 'none')
		document.getElementById(id).style.display = 'block';
	else document.getElementById(id).style.display = 'none';
}

// Trims whitespaces around a string
function Trim(inputString) 
{
	while (inputString.substring(0,1) == ' ')
	{
		inputString = inputString.substring(1, inputString.length);
	}
	while (inputString.substring(inputString.length-1, inputString.length) == ' ')
	{
		inputString = inputString.substring(0,inputString.length-1);
	}
	return inputString;
}

function changeElementClass(elementId, className) {
	element = document.getElementById(elementId);
	element.className = className;
}

//
// Form validation functions
//
function isFormFieldExists(formFieldId) {
	if(formFieldId.indexOf('#') == -1 && formFieldId.indexOf('|') == -1 && formFieldId.indexOf('@') == -1)
	{
		// textual fields
		return (document.getElementById(formFieldId) != undefined);
	}
	else if(formFieldId.indexOf('|') != -1)
	{
		//Compare two fields values
		fieldItems = formFieldId.split("|");
		return (document.getElementById(fieldItems[0]) != undefined && document.getElementById(fieldItems[1]) != undefined);
	}
	else if(formFieldId.indexOf('@') != -1)
	{
		//email fields
		fieldItems = formFieldId.substring(1);
		return (document.getElementById(fieldItems) != undefined);
	}
	else
	{
		// group fields: radio, checkbox .. example: radio_1,radio_2
		fieldItems = formFieldId.split("#");
		return (document.getElementById(fieldItems[0] + "_1") != undefined);
	}
}

function isFormFieldFilled(formFieldId) {
	if(formFieldId.indexOf('#') == -1 && formFieldId.indexOf('|') == -1 && formFieldId.indexOf('@') == -1)
	{
		// textual fields
		if(isFormFieldExists(formFieldId) && (Trim(document.getElementById(formFieldId).value) != ''))
		{
			return true;
		}
		else
		{
			document.getElementById(formFieldId).value = '';
			return false;
		}
	}
	else if(formFieldId.indexOf('|') != -1)
	{
		// two fields with value comparison
		fieldItems = formFieldId.split("|");
		if (isFormFieldExists(formFieldId) && Trim(document.getElementById(fieldItems[0]).value) != '' && Trim(document.getElementById(fieldItems[1]).value) != '')
		{
			if (Trim(document.getElementById(fieldItems[0]).value) == Trim(document.getElementById(fieldItems[1]).value)) 
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	else if(formFieldId.indexOf('@') != -1)
	{
		// two fields with value comparison
		fieldItems = formFieldId.substring(1);
		if (isFormFieldExists(formFieldId) && Trim(document.getElementById(fieldItems).value) != '')
		{
		    compareString       = Trim(document.getElementById(fieldItems).value);

            if(compareString.indexOf('@') == -1 || compareString.indexOf('.') == -1)
            {
                return false;
            }

		    return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		// group fields: radio, checkbox .. example: radio_1,radio_2
		formFieldFilled = false;
		fieldItems  = formFieldId.split("#");
		for(j = 0; j < fieldItems[1]; j++)
		{
			fieldName = fieldItems[0] + "_" + (j + 1);
			if(document.getElementById(fieldName).checked == true && isFormFieldExists(fieldName))
			{
				formFieldFilled	= true;
			}
		}
		return formFieldFilled;
	}
}

function validateFormFields(warningTitle, fieldsArray, className) {
	warningMessage = '';
	for (i=0; i<fieldsArray.length; i++) {
		if (!isFormFieldFilled(fieldsArray[i][0])) {
			if (fieldsArray[i][2] != '' && isFormFieldExists(fieldsArray[i][0]) && fieldsArray[i][0].indexOf("#")==-1 && fieldsArray[i][0].indexOf("|")==-1 && fieldsArray[i][0].indexOf("@")==-1)
			{
				document.getElementById(fieldsArray[i][0]).className = fieldsArray[i][2];
                warningMessage += '\t- ' + fieldsArray[i][1] + '\n';
			}
			
			// two fields with value comparison
			if (fieldsArray[i][0].indexOf("|") != -1)
			{
				formItem = fieldsArray[i][0].split('|');
				if(document.getElementById(formItem[0]).value != '' || document.getElementById(formItem[1]).value != '')
				{
				    document.getElementById(formItem[0]).className = fieldsArray[i][2];
				    document.getElementById(formItem[1]).className = fieldsArray[i][2];
				    warningMessage += '\t- ' + fieldsArray[i][1] + '\n';
				}
			}
			
			// email field
			if (fieldsArray[i][0].indexOf("@") != -1)
			{
				formItem = fieldsArray[i][0].substring(1);
				document.getElementById(formItem).className = fieldsArray[i][2];
				warningMessage += '\t- ' + fieldsArray[i][1] + '\n';
			}
			
			// group fields: radio, checkbox .. example: radio_1,radio_2
			if (fieldsArray[i][0].indexOf("#") != -1)
			{
				formItem = fieldsArray[i][0].replace('#','_');
				document.getElementById(formItem).className = fieldsArray[i][2];
				warningMessage += '\t- ' + fieldsArray[i][1] + '\n';
			}
		}
	}
	if (warningMessage != '') {
		alert(warningTitle + '\n\n' + warningMessage);
		return false;
	}
	else
		return true;
}

function HideFormFields() {
	for (i=0; i<document.forms.length; i++) {
		for (j=0; j<document.forms[i].elements.length; j++) {
			if (document.forms[i].elements[j].type == "select-one")
				document.forms[i].elements[j].style.display = "none";
		}
	}
}

function ShowFormFields() {
	for (i=0; i<document.forms.length; i++) {
		for (j=0; j<document.forms[i].elements.length; j++) {
			if (document.forms[i].elements[j].type == "select-one")
				document.forms[i].elements[j].style.display = "";
		}
	}
}

function HideFlashObjects() {
	var objects = document.getElementsByTagName("object");
	for (i=0; i<objects.length; i++) {
		objects[i].style.display = "none";		
	}
}

function ShowFlashObjects() {
	var objects = document.getElementsByTagName("object");
	for (i=0; i<objects.length; i++) {
		objects[i].style.display = "";		
	}
}

//
// Cookie functions
//

function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires : "") +
		((path) ? "; path=" + path : "") +
		//((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function GetCookieDate(dtInput) {
	// dani
	aDays = new Array();
	aDays[0] = "Sunday";
	aDays[1] = "Monday";
	aDays[2] = "Tuesday";
	aDays[3] = "Wednesday";
	aDays[4] = "Thursday";
	aDays[5] = "Friday";
	aDays[6] = "Saturday";
	strDanIme = aDays[dtInput.getDay()];
	strDan = dtInput.getDate()
	
	// mesec
	aMonths = new Array();
	aMonths[0] = "January";
	aMonths[1] = "February";
	aMonths[2] = "March";
	aMonths[3] = "April";
	aMonths[4] = "May";
	aMonths[5] = "June";
	aMonths[6] = "July";
	aMonths[7] = "August";
	aMonths[8] = "September";
	aMonths[9] = "October";
	aMonths[10] = "November";
	aMonths[11] = "December";
	strMesec = aMonths[dtInput.getMonth()];
	
	// godina
	strGodina = dtInput.getYear().toString();
	strGodina = strGodina.substr(2,2);
	
	// vratim
	strOutput = strDanIme + ", " + strDan + "-" + strMesec + "-" + strGodina + " " + dtInput.getHours() + ":" + dtInput.getMinutes() + ":" + dtInput.getSeconds() + " GMT";
	return strOutput;
}

//
// Date functions
//

function fixDate(date) {
	var base = new Date(0);
	var skew = base.getTime();
	if (skew > 0)
		date.setTime(date.getTime() - skew);
}
	
//
// Math functions
//

function FixMath(n) {
	var s = "" + Math.round(n * 100) / 100
	var i = s.indexOf('.')
	if (i < 0)
	return s + ".00"
	var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3)
	if (i + 2 == s.length)
	t += "0"
	return t
}

function htmlEncode(source)
{
	function special(source)
	{
		var result = '';
		for (var i = 0; i < source.length; i++)
		{
			var c = source.charAt(i);
			if (c < ' ' || c > '~')
			{
				c = '&#' + c.charCodeAt() + ';';
			}
			result += c;
		}
		return result;
	}	

	var result = source;
	
	// ampersands (&)
	result = result.replace(/\&/g,'&amp;');

	// less-thans (<)
	result = result.replace(/\</g,'&lt;');

	// greater-thans (>)
	result = result.replace(/\>/g,'&gt;');
		
	// quotes (")		
	result = result.replace(new RegExp('"','g'), '&quot;');	

	// special characters
	result = special(result);
	
	// tada!
	return result;
}