$(document).ready( function() {
	setInterval(handlePaste, 500);
	$('a.tablink').live('click', function(){
		var linkId = $(this).attr('id').split(':');
		var licenseItems = $('#licenseMenu > li');
		if (linkId.length > 1 && licenseItems.length == 3) {
			licenseItems.removeClass('active');
			$('li#' + linkId[0] + 'License').addClass('active');
		}
	});
	proceedBookmark();
});

var reloadItems= ''; 

function proceedBookmark(){
	var hash = window.location.hash;
	
	if (hash.indexOf('licensetab'.toLowerCase()) != -1) {
		changeSelection('licenseMenu', getTabName(hash) );
		blinkSelection ('licenseMenu', getTabName(hash) );
	}
}

function getTabName(hash) {
	var tabName = 'companyLicense'; 

	hash = hash.substring(1);
	if (hash.toLowerCase() == 'companyLicenseTab'.toLowerCase()) {
		tabName = 'companyLicense';
	}
	if (hash.toLowerCase() == 'unlimitedLicenseTab'.toLowerCase()) {
		tabName = 'unlimitedLicense';
	}
	if (hash.toLowerCase() == 'sourceLicenseTab'.toLowerCase()) {
		tabName = 'sourceLicense';
	}
	
	//for OpenFaces product
	if (location.href.indexOf('openfaces') != -1){
		tabName = 'supportLicense';
	}
	if (hash.toLowerCase() == 'commercialLicenseTab'.toLowerCase()) {
		tabName = 'commercialLicense';
	}
	
	return tabName;
}

function handlePaste() {
	if (O$('company:quantity') != null) {
		var value = O$('company:quantity').value;
		calculatorChangeHandler(value, validateStoreQuantity, validationFail,
				validationPassed, processEmptyField);
	}
}

function calculatorCallback() {
//	O$('company:quantity').focus();
}

var previousValue = null;
function updateCalculator() {
	if (!documentReady) {
		return false;
	}

	O$.ajax.request(undefined, undefined, {
	          		render : 'company:fullprice company:price',
					onajaxend :calculatorCallback,
	          		immediate :true,
	          		execute : 'company:quantity'
	          	});

}
function calculatorChangeHandler(value, validate, onValidationFail,
		onValidationPass, onEmptyField) {
	if (validate(value)) {
		if (value != previousValue) {
			updateCalculator();
		}
		onValidationPass();
	} else {
		if (value == '') {
			onEmptyField();
		} else {
			onValidationFail();
		}
	}
	previousValue = value;
	return true;
}

function isNumeric(strString) {
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;

	if (strString.length == 0)
		return false;

	// test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++) {
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1) {
			blnResult = false;
		}
	}
	return blnResult;
}

function validationFail() {
	O$('company:proceedSale').disabled = true;
	O$('company:quantity').className = 'errorBorder';
}

function validationPassed() {
	O$('company:proceedSale').disabled = false;
	O$('company:quantity').className = 'customBorder';
}

function validateStoreQuantity(value) {
	return isNumeric(value) && value > 0;
}

function processEmptyField() {
	O$('company:proceedSale').disabled = true;
	O$('company:quantity').className = 'customBorder';
}

function changeSelectedItem(selectedIndex, formId, validate) {
	if (!documentReady) {
		return false;
	}

	var addParams = {'selectedIndex':selectedIndex}; 
	var reloadComponents = '';
	reloadItem = O$('productList').children[selectedIndex].id;
	reloadComponents = getCorporativeComponents(validate) + ' ' +
					   getUnlimitedComponents() + ' ' +
					   getSourceComponents();
	
	O$.ajax.request(undefined, undefined, {
		  listener: "productSelectionManager.select",
		  render: reloadComponents, 
		  onajaxend: reDrawItemBox,
		  params: addParams
	});
}

function reDrawItemBox() {
	var activeBoxes = $("li.selected");
	for (var i=0; i < activeBoxes.length; i++) {
		if (activeBoxes[i].id.indexOf('selectItemHolder') != -1) {
			$(activeBoxes[i]).context.className = '';
		}
	}
	
	reloadItem = reloadItem.split(':')[1] + ':' + reloadItem.split(':')[2];
	O$('company:' + reloadItem).className = 'selected';
	O$('unlimited:' + reloadItem).className = 'selected';
	O$('source:' + reloadItem).className = 'selected';
}

function getCorporativeComponents(validate) {
	var reloadComponents = '';
	var formId = 'company';
	if (validate) {
		var value = O$(formId + ':quantity').value;
		if (validate(value)) {
			reloadComponents = formId + ':calculator ' + 
							   formId + ':fullPriceList';
			                     
		} else {
			reloadComponents = formId + ':fullprice ' + 
							   formId + ':price ' + 
							   formId + ':platofrmname ' + 
							   formId + ':architecture';
		}
	} else {
		reloadComponents = formId + ':calculator';
	}
	return reloadComponents;
}

function getUnlimitedComponents() {
	var reloadComponents = '';
	var formId = 'unlimited';
	reloadComponents = formId + ':requestTitle ' + 
					   formId + ':selectedProduct';
	return reloadComponents;
}

function getSourceComponents() {
	var reloadComponents = '';
	var formId = 'source';
	reloadComponents = formId + ':requestTitle ' + 
					   formId + ':selectedProduct';
	return reloadComponents;
}

function showPriceList() {
	hideElement(O$('showPriceListCommandHolder'));
	$('#selection').addClass('openedSeeFullPriceList');
}

function hidePriceList() {
	show('showPriceListCommandHolder');
	$('#selection').removeClass('openedSeeFullPriceList');
}

function validateLicenseRequestForm(formid, element) {
	if (element.value == '') {
		element.className = 'customBorder';
	}
	if (!validate(element.value)) {
		O$(formid + ":sendRequestProxy").disabled = true;
		element.className = 'errorBorder';
	}
}
function validate(email) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return reg.test(email);
}

function validateLicenseRequestFormOnKeyDown(formid, element) {
	if (validate(element.value)) {
		O$(formid + ":sendRequestProxy").disabled = false;
		element.className = 'customBorder';
	}
}

function complexSourceCodeReload() {
	O$.ajax.request(undefined, undefined, {
		render : 'source:selectedProduct source:requestTitle',
		execute: 'source:including',
		onajaxend : changeSelectionToSourceCode,
		immediate :true,
		listener : productName + 'PurchaseTypeSelection.changeToSources'
	});
	
}

function refreshRequest(formid) {
	O$.ajax.request(undefined, undefined, {
		  render : formid + ':productSelection', 
		  immediate :true
	});
}

function setSourceCodeLicense(productName) {
	if (!documentReady) {
		return false;
	}

	changeSelectionToSourceCode();
	return false;
}

function changeSelectionToSourceCode() {
	changeSelection('licenseMenu', 'sourceLicense');
}

function initUpgradesClick(){
	$('#upgrades-link').live('click', function (){
													
	});
}
