var defaultInt = 0;
var projectParts = 1;
var lastTabIndex = 0;

/*function toggle_popup( applicationUrl ) {
	
	var popup_container_obj = document.getElementById("popup_container");
	if( applicationUrl != null ){
	var appView = document.getElementById("application_view");
		appView.src = applicationUrl;
	}
	
	if( popup_container_obj ) {
		if( popup_container_obj.style.visibility == "hidden" || popup_container_obj.style.visibility == "" ) {
			popup_container_obj.style.visibility = "visible";
		}
		else {
			popup_container_obj.style.visibility = "hidden";
		}
	}

}*/

function printContent( basePath, url ) {
		
	//var contentObj = document.getElementById(divId);
	
	//if( contentObj ) {
		var winId = window.open(url,'printwin','width=680,height=600,scrollbars=yes'); 
		/*winId.document.write('<html>\n<head>\n<title>Sparbanksstiftelsen Nya</title>\n<link href="' + basePath + '/static/styles/global.css" rel="stylesheet" type="text/css">\n<link href="' + basePath + '/static/styles/tabBox.css" rel="stylesheet" type="text/css">\n<link href="' + basePath + '/static/styles/textFormats.css" rel="stylesheet" type="text/css">\n\n<style type="text/css">\nBODY{ background-color: #FFFFFF; margin: 40px;}\n</style>\n</head>\n<body><div class=\"tab_box_container\">' + contentObj.innerHTML + '\n</div></body>\n</html>'); 
		winId.document.close(); 
		winId.focus(); */
		if (window.print) winId.print();
	/*}
	else {
		alert('Your web browser does not support this function');
	}*/
}

function open_popupWindow(documentURLStr,windowNameStr,windowExtrasStr) {		
	open_popupWindowObj = window.open(documentURLStr,windowNameStr,windowExtrasStr);
	open_popupWindowObj.focus();
}

function open_centeredPopupWindow(documentURLStr,windowNameStr,winWidth,winHeight,windowExtrasStr) {
	var windowLeftPosInt	= ((screen.width - winWidth) / 2);
	var windowTopPosInt	= ((screen.height - winHeight) / 2);
	open_popupWindow(documentURLStr,windowNameStr,"width=" + winWidth + ",height=" + winHeight + ",top=" + windowTopPosInt + ",left=" + windowLeftPosInt + "," + windowExtrasStr);
}

function popupCommentEditor( url ){
	open_centeredPopupWindow( url, 'CommentEditor', 500, 400, '');
}

function popupApplicationEditor( url ){
	open_centeredPopupWindow( url, 'AppEditor', 600, 600, 'scrollbars=1,resizable=1');
}

function popupPaymentEditor( url ){
	open_centeredPopupWindow( url, 'PaymentEditor', 620, 600, 'scrollbars=1,resizable=1');
}

function printMailView( url ){
	open_centeredPopupWindow( url, 'PaymentEditor', 600, 600, 'scrollbars=1,resizable=1');
}

function switchSearchTab( viewIndex, tabIdSerieStr, contentIdSerieStr, tabParamName ){
	
	var className_first_offStr = "tab_instance_first";
	var className_first_onStr = "tab_instance_first_on";
	var className_onStr = "tab_instance_on";
	var className_offStr = "tab_instance";
	
	var tabParamObj = document.getElementById( tabParamName );
	var tabViewObj = document.getElementById( tabIdSerieStr + "_" + lastTabIndex );
	var tabContentObj = document.getElementById( contentIdSerieStr + "_" + lastTabIndex );
	
	if( tabViewObj && tabContentObj ) {
		var nextViewObj = document.getElementById( tabIdSerieStr + "_" + viewIndex );
		var nextContentObj = document.getElementById( contentIdSerieStr + "_" + viewIndex );
		if( nextViewObj && nextContentObj ) {
			// reset last tab
			if( lastTabIndex == 0 ) {
				tabViewObj.className = className_first_offStr;
			}
			else {
				tabViewObj.className = className_offStr;
			}
			// set current tab
			if( viewIndex == 0 ) {
				nextViewObj.className = className_first_onStr;
			}
			else {
				nextViewObj.className = className_onStr;
			}
			tabContentObj.style.display = "none";
			nextContentObj.style.display = "block";
			lastTabIndex = viewIndex;
			
			if( tabParamObj != null ){
				tabParamObj.value = viewIndex;
			}
		}
	}
}

function switchTab( forwardBool, tabIdSerieStr, contentIdSerieStr, formIdStr, stepParamName ) {
	if( forwardBool ) {
		nextViewInt  = defaultInt + 1;
	}
	else {
		nextViewInt  = defaultInt - 1;
	}
	switchTabIndex( nextViewInt, tabIdSerieStr, contentIdSerieStr, formIdStr, stepParamName );
}


function switchTabIndex( viewIndex, tabIdSerieStr, contentIdSerieStr, formIdStr, stepParamName ) {

	var className_first_offStr = "tab_instance_first";
	var className_first_onStr = "tab_instance_first_on";
	var className_onStr = "tab_instance_on";
	var className_offStr = "tab_instance";
	
	var prevTriggerIdStr = "prev";
	var nextTriggerIdStr = "next";
	var nextTriggerSubmitValueStr = "Vidare till bilagor";
	var nextTriggerDefaultValueStr = "Gå vidare till nästa steg"
	
	var formObj = document.getElementById( formIdStr );
	var tabViewObj = document.getElementById( tabIdSerieStr + "_" + defaultInt );
	var tabContentObj = document.getElementById( contentIdSerieStr + "_" + defaultInt );
	var prevTriggerObj = document.getElementById( prevTriggerIdStr );
	var nextTriggerObj = document.getElementById( nextTriggerIdStr );
	var stepParamObj = document.getElementById( stepParamName );
	
	if( tabViewObj && tabContentObj ) {
		var nextViewObj = document.getElementById( tabIdSerieStr + "_" + viewIndex );
		var nextContentObj = document.getElementById( contentIdSerieStr + "_" + viewIndex );
		var tabCountInt = tabCount( tabIdSerieStr );
		
		if( nextViewObj && nextContentObj ) {
			
			// reset last tab
			if( defaultInt == 0 ) {
				tabViewObj.className = className_first_offStr;
			}
			else {
				tabViewObj.className = className_offStr;
			}
			// set current tab
			if( viewIndex == 0 ) {
				nextViewObj.className = className_first_onStr;
			}
			else {
				nextViewObj.className = className_onStr;
			}
			
			tabContentObj.style.display = "none";
			nextContentObj.style.display = "block";
			
			defaultInt = viewIndex;
			if( stepParamObj != null ){
				stepParamObj.value = defaultInt;
			}
			
			if( viewIndex == tabCountInt ) {
				prevTriggerObj.disabled = false;
				nextTriggerObj.value = nextTriggerSubmitValueStr;
			}
			else if( viewIndex == 0 ) {
				prevTriggerObj.disabled = true;
				nextTriggerObj.value = nextTriggerDefaultValueStr;
			}
			else {
				prevTriggerObj.disabled = false;
				nextTriggerObj.disabled = false;
				nextTriggerObj.value = nextTriggerDefaultValueStr;
			}
		} else {
			formObj.submit();
		}
	}
	else {
		alert("Det har upptått ett fel: Objekt kan inte skapas.");
	}
	
}


/*
function switchTab( forwardBool, tabIdSerieStr, contentIdSerieStr, formIdStr ) {

	var className_first_offStr = "tab_instance_first";
	var className_onStr = "tab_instance_on";
	var className_offStr = "tab_instance";
	
	var prevTriggerIdStr = "prev";
	var nextTriggerIdStr = "next";
	var nextTriggerSubmitValueStr = "Slutför";
	var nextTriggerDefaultValueStr = "Gå vidare till nästa steg"
	
	if( forwardBool ) {
		nextViewInt  = defaultInt + 1;
	}
	else {
		nextViewInt  = defaultInt - 1;
	}
	
	var formObj = document.getElementById( formIdStr );
	var tabViewObj = document.getElementById( tabIdSerieStr + "_" + defaultInt );
	var tabContentObj = document.getElementById( contentIdSerieStr + "_" + defaultInt );
	var prevTriggerObj = document.getElementById( prevTriggerIdStr );
	var nextTriggerObj = document.getElementById( nextTriggerIdStr );
	
	if( tabViewObj && tabContentObj ) {
		var nextViewObj = document.getElementById( tabIdSerieStr + "_" + nextViewInt );
		var nextContentObj = document.getElementById( contentIdSerieStr + "_" + nextViewInt );
		var tabCountInt = tabCount( tabIdSerieStr );
		
		if( nextViewObj && nextContentObj ) {
			
			if( nextViewInt < defaultInt ) {
				nextViewObj.className = className_onStr;
				tabViewObj.className = className_offStr;
			}
			else {
				nextViewObj.className = className_onStr;
				tabViewObj.className = className_first_offStr;
			}
			
			tabContentObj.style.display = "none";
			nextContentObj.style.display = "block";
			
			defaultInt = nextViewInt;
			
			if( nextViewInt == tabCountInt ) {
				prevTriggerObj.disabled = false;
				nextTriggerObj.value = nextTriggerSubmitValueStr;
			}
			else if( nextViewInt == 0 ) {
				prevTriggerObj.disabled = true;
				nextTriggerObj.value = nextTriggerDefaultValueStr;
			}
			else {
				prevTriggerObj.disabled = false;
				nextTriggerObj.disabled = false;
				nextTriggerObj.value = nextTriggerDefaultValueStr;
			}
		}
		else {
			formObj.submit();
		}
	}
	else {
		alert("Det har upptått ett fel: Objekt kan inte skapas.");
	}
	
}*/

function tabCount( tabIdSerieStr ) {
	
	var tabCounterInt = 0;
	var tabCounterObj = document.getElementById( tabIdSerieStr + "_" + tabCounterInt );
	
	while( tabCounterObj != null ) {
		tabCounterObj = document.getElementById( tabIdSerieStr + "_" + (tabCounterInt++) );
	}
	
	return tabCounterInt - 2;

}

function calculate( fundingCollectedField, fundingPendingField, partCostField, partPrivateFundingField, partOtherFundingField, partFundingApplicationField ){
	
	var partCostObj = document.getElementById( partCostField );
	var partPrivateFundingObj = document.getElementById( partPrivateFundingField );
	var partOtherFundingObj = document.getElementById( partOtherFundingField );
	var partOtherFundingObj2 = document.getElementById( partOtherFundingField+"1" );
	var partFundingApplicationObj = document.getElementById( partFundingApplicationField );
	var partFundingApplicationObj2 = document.getElementById( partFundingApplicationField+"1" );
	
	var totalOtherFundings = 0;
	var fundingCounter = 0;
	var fundingCollectedObj = document.getElementById( fundingCollectedField + "_" + fundingCounter );
	var fundingPendingObj = document.getElementById( fundingPendingField + "_" + fundingCounter );
	while( fundingCollectedObj != null ){
		//totalOtherFundings += checkPositiveValue( parseInt(fundingCollectedObj.value) );
		//totalOtherFundings += checkPositiveValue( parseInt(fundingPendingObj.value) );
		totalOtherFundings += getPositiveIntValue(fundingCollectedObj.value);
		totalOtherFundings += getPositiveIntValue(fundingPendingObj.value);
		fundingCounter++;
		fundingCollectedObj = document.getElementById( fundingCollectedField + "_" + fundingCounter );
		fundingPendingObj = document.getElementById( fundingPendingField + "_" + fundingCounter );
	}
	partOtherFundingObj.value = totalOtherFundings;
	partOtherFundingObj2.value = partOtherFundingObj.value;
	
	//var totalCost = checkPositiveValue( parseInt(partCostObj.value) );
	//var privateFundings = checkPositiveValue( parseInt(partPrivateFundingObj.value) );
	var totalCost = getPositiveIntValue(partCostObj.value);
	var privateFundings = getPositiveIntValue(partPrivateFundingObj.value);
	partFundingApplicationObj.value = (totalCost - totalOtherFundings) - privateFundings;
	partFundingApplicationObj2.value = partFundingApplicationObj.value;
	
}

function getPositiveIntValue( value ){
	if( value.length == 0 ){
		return 0;
	} else {
		return checkPositiveValue(parseInt(removeDotsAndSpaces(value)));
	}
}

function checkPositiveValue( value ){
	return ( value > -1 ) ? value : 0;
}

/*function removeDotsAndSpaces( value ){

	while( value.indexOf(".") != -1 ){
		value = value.replace(".","");
	}
	while( value.indexOf(" ") != -1 ){
		value = value.replace(" ","");
	}
	return value;
} */

function removeDotsAndSpaces( obj_value ) {
  
	if( obj_value ) {
		
		var valid = "0123456789";
		var return_str = "";
		var character;
		
		for( var i = 0; i < obj_value.length; i++) {
			
			character = obj_value.charAt( i );
			
			if( valid.indexOf( character ) != -1 )
				return_str += character;
		}
		
		return return_str;
	}
	else
		return "0";
   
}

function dp_float_to_string( num ) {
	return ( "" + Math.round( num * 100 ) / 100 ).replace(".",",");
}

function setFormValue( formNameStr, fieldNameStr, fieldValueStr ) {
	
	var formObj = eval( formNameStr );
	var fieldObj = eval( "formObj." + fieldNameStr );
	
	fieldObj.value = fieldValueStr;
	formObj.submit();
	
}

function printDivContent( contentIDStr, styleStr ) {
	
	var contentObj = document.getElementById( contentIDStr );
	var linksObj = document.getElementsByTagName("link");
	var linksStr = "";
	
	if( linksObj ) {
		for( var i = 0; i <= linksObj.length; i++) {
			if( linksObj[i] != null ) {
				linksStr = linksStr + '<link href="' + linksObj[i].getAttribute("href") + '" rel="stylesheet" type="text/css">\n';
			}
		}
	}
	//if( styleStr != null && styleStr.lenth > 0 ){
		linksStr = linksStr + '<style type="text/css">' + styleStr + '</style>\n';
	//}
	
	if( contentObj != null ) {
		var winId = window.open('','printwin','width=640,height=600,scrollbars=yes'); 
			winId.document.write('<html>\n<head>\n<title>' + document.title + '</title>\n' + linksStr + '\n</head>\n<body><div>' + contentObj.innerHTML + '</div>\n</body>\</html>'); 
			winId.document.close(); 
			winId.focus(); 
		if (window.print) winId.print();
	}
	else {
		alert("Your web browser does not support this function");
	}
}

// ---- Form functions ----

function dp_get_label( form_obj, id ) {
	
	var label_arr = form_obj.getElementsByTagName("label");
	
	for( var i = 0; i < label_arr.length; i++ ) {
		if( label_arr[i].getAttribute("for") == id || label_arr[i].attributes['for'].nodeValue == id){
			return label_arr[i];
		}
	}
	return null;
	
}

function dp_check_whole_page( form_obj, min_length, check_password ) {

	var fields_arr = form_obj.getElementsByTagName("input");
	var complete = true;
	
	for( var i = 0; i < fields_arr.length; i++ ) {
		
		if( fields_arr[i].value.length < min_length ) {
			if( dp_get_label( form_obj, fields_arr[i].id ) )
				dp_get_label( form_obj, fields_arr[i].id ).style.color = "#FF0000";
			
			complete = false;
		}
		else {
			if( dp_get_label( form_obj, fields_arr[i].id ) )
				dp_get_label( form_obj, fields_arr[i].id ).style.color = "#000000";

		}
			
	}
	
	if( check_password && complete ) {
		complete = dp_check_password( form_obj , 'password', 'password_ver', 6 );
	}
	
	
	return complete;
	
}

function dp_check_password( form_obj, password_field, verify_field, min_length ) {
	
	if( $( password_field )  &&  $(verify_field) ) {
		if( $( password_field ).value !=$(verify_field ).value || $( password_field ).value.length < min_length ) {
			dp_get_label( form_obj, password_field ).style.color = "#FF0000";
			dp_get_label( form_obj, verify_field ).style.color = "#FF0000";
			return false;
		}
		else {
			dp_get_label( form_obj, password_field ).style.color = "#000000";
			dp_get_label( form_obj, verify_field ).style.color = "#000000";
			return true;
		}
	}
	
}

// ---- Application functions ----

function dp_showFieldLength() {
	
	var counter_obj = $( this.id + "_counter" );
	var max_length = $( this.id + "_max" );
	var counter_container_obj = $( this.id + "_counter_container" );
	
	if( counter_obj  && max_length ) {
		
		max_length = parseInt( max_length.innerHTML );
		
		if(  ( max_length - this.value.length ) <= 0 ) {
			this.value = this.value.substring( 0, max_length );
			counter_container_obj.style.color = "#FF0000";
			counter_obj.innerHTML = 0;
		}
		else {
			counter_container_obj.style.color = "#000000";
			counter_obj.innerHTML = max_length - this.value.length;
		}
		
	}

}

function dp_showFieldLength_init() {
	
	if( $("viewform") ) {
		
		var fields_arr = document.getElementsByClassName("field",$("viewform"));
		
		if( fields_arr ) {
			for( var i = 0; i < fields_arr.length; i++ ) {
				if( $( fields_arr[i].id + "_counter" ) != null ) {
					fields_arr[i].onkeyup = dp_showFieldLength;
					fields_arr[i].onblur = dp_showFieldLength;
				}
			}
		}
				
	}
	
}

function dp_calculate_contr( obj ) {

	var requested_prefix = "contrreq_";
	var granted_prefix = "contrgrant_";
	
	var obj_id = obj.id.split("_");
		obj_id = obj_id[1];
		
	var requested = removeDotsAndSpaces( $( requested_prefix + obj_id ).value);
		requested = requested.replace(",",".")
		requested = parseFloat( requested );
		
	var granted = removeDotsAndSpaces( $( granted_prefix + obj_id ).value );
		granted = granted.replace(",",".")
		granted = parseFloat( granted );
		
	var sum = $("contr_" + obj_id + "_sum");
	
	sum.innerHTML = ("" + Math.round((requested - granted) * 100) / 100 ).replace(".",",");
	
}

function dp_calculate_sum( prefix, container ) {

	var container_obj = $( container );
	var total_sum_var = 0;
	var total_sum = 0;
	
	if( container_obj ) {
		
		var sum_obj = container_obj.getElementsByTagName("input");
		
		for( var i = 0; i < sum_obj.length; i++ ) {
			
			if( sum_obj[i].id.indexOf( prefix ) != -1 ) {
				total_sum_var = removeDotsAndSpaces( sum_obj[i].value );
				total_sum_var = total_sum_var.replace(",",".");
				total_sum += parseFloat( total_sum_var );
			}	
		}
		
		return total_sum;
	}
	
}

function dp_calculate_page_sums() {
	
	if( $("financing_planned_sum") && $("financing_costs_sum") && $("contr_total") ) {
	
		var financing_planned_sum = 0;
		var financing_costs_sum = 0;
		var contr_total = 0;
		var page_sum = 0;
		
		financing_planned_sum = dp_calculate_sum( "value_", "financing_planned" );
		financing_costs_sum = dp_calculate_sum( "value_", "financing_costs" );
		contr_total = dp_calculate_sum( "contrgrant_", "financing_contr" );
		page_sum =  financing_costs_sum - (financing_planned_sum + contr_total);
		
		$("financing_planned_sum").innerHTML = dp_float_to_string( financing_planned_sum );
		$("financing_costs_sum").innerHTML = dp_float_to_string( financing_costs_sum );
		$("contr_total").innerHTML = dp_float_to_string( contr_total );
		$("page_sum").innerHTML = dp_float_to_string( page_sum );
	
	}

}

function dp_calculate_page_sums_init() {

	var fields_arr = document.getElementsByTagName("input");
	
	if( fields_arr ) {
		for( var i = 0; i < fields_arr.length; i++ ) {
			if( fields_arr[i].id.indexOf("value_") != -1 || fields_arr[i].id.indexOf("contrreq_") != -1 ) {
				fields_arr[i].value = removeDotsAndSpaces( fields_arr[i].value );
				fields_arr[i].onkeyup = dp_calculate_page_sums;
				fields_arr[i].onblur = dp_calculate_page_sums;
			}
		}
	}
	
}

// Init

dp_showFieldLength_init();
dp_calculate_page_sums_init();

