function checkQr() {
	if ('1' == getCookie('startWithQr') && getBarcodeType() == "dm") {
		changeCodeMode();
		//setCookie('startWithQr', '0', 30, '/', '', '');
		//deleteCookie('startWithQr');
	}
}
function checkVcard() {
	if ('1' == getCookie('startWithvCard')) {
		setCookie('startWithvCard', '0', 30, '/', '', '');
		document.getElementById("radio_vcard").checked = true;
		updateRadioView();
	}
}

/* Copy value of "active" size drop down to hiden one */
function updateSize(element) {
	if (element) {
		document.getElementById("size_dm").selectedIndex = element.selectedIndex;
		document.getElementById("size_qr").selectedIndex = element.selectedIndex;
	}

}

function updateCode() {
	var codeImg = document.getElementById("code");
	showInstructions();
	codeImg.src = codeImgUrl();
	save();
}

function updateCounter(max, field, counterFieldName) {
	var charsLeft = max - field.value.length;	
	document.getElementById(counterFieldName).innerHTML = charsLeft;	
}

function codeImgUrl() {
	//document.getElementById("lenwarn").style.display = "none";
	var form = document.getElementById("form");
	var name = document.getElementById("name").value;
	var type = getRadioValue();
	var codeVal = buildCodeValue();
	var barcodeType = getBarcodeType();
	var sizeEl = document.getElementById("size_"+barcodeType);
	var size = sizeEl.options[sizeEl.selectedIndex].value;
	// TODO: server address
	// requires variable: barcodeImgBaseUrl, eg. http://83.145.232.112/dm
	//var barcodeImgBaseUrl = "http://83.145.232.112/dm" // "http://sip.futu.info/barcode/dm";
	if(barcodeType == "qr"){

	var finishedURL = barcodeImgBaseUrl + "/" + barcodeType + "?DATA=" + encodeURIComponent(codeVal) + 
"&MODULE_SIZE=" + size + "&name=" + encodeURIComponent(name) + "&MARGIN=2" + "&ENCODING=BYTE" + "&type=" + 
type;

	}
	else if(barcodeType == "dm"){
	var finishedURL = barcodeImgBaseUrl + "/" + barcodeType + "?BARCODE=" + encodeURIComponent(codeVal) + "&X=" + size + "&name=" + 
encodeURIComponent(name) + "&type=" + type;
	}

	if (getRadioValue() == "phone") {
		finishedURL = finishedURL + "&MODE=NUMBER";
	}
	if (getRadioValue() == "vcard") {
		finishedURL = finishedURL.replace(/%3A/g, ":");
	}
	else {
		finishedURL = finishedURL + "&MODE=TEXT";
	}
	
	return finishedURL;
}

function buildCodeValue() {
	hideLink();
	var radioVal = getRadioValue();
	var codeText = "";
	/*
	if (radioVal == "sms") {
		codeText = "SMSTO:" + getFieldVal("in_number") + ":" + getFieldVal("in_sms");
	}*/
	if (radioVal == "link") {
		codeText = getFieldVal("in_link");
		if (codeText == "http://") {
			codeText = "";
		}
	}
	if (radioVal == "phone") {
		codeText = getFieldVal("in_phone");
	}
	if (radioVal == "text") {
		codeText = getFieldVal("in_text");
	}
	if (radioVal == "vcard") {
		if(getFieldVal("vcard_sn").length > 0){
			codeText += "\nN:" + getFieldVal("vcard_sn");
		}		
		if(getFieldVal("vcard_fn").length > 0){
			if(getFieldVal("vcard_sn").length > 0){
				codeText += ";";
			}
			else{
			codeText += "\nN:";
			}
			codeText += getFieldVal("vcard_fn");
		}
		if(getFieldVal("vcard_tel").length > 0){
			codeText += "\nTEL:" + getFieldVal("vcard_tel");
		}
		if(getFieldVal("vcard_email").length > 0){
			codeText += "\nEMAIL:" + getFieldVal("vcard_email");
		}
		if(getFieldVal("vcard_org").length > 0){
			codeText += "\nORG:" + getFieldVal("vcard_org");
		}				
		if(getFieldVal("vcard_title").length > 0){
			codeText += "\nTITLE:" + getFieldVal("vcard_title");
		}
		if(getFieldVal("vcard_addr").length > 0){
			codeText += "\nADR:" + getFieldVal("vcard_addr");
		}
		if(getFieldVal("vcard_url").length > 0){
			codeText += "\nURL:" + getFieldVal("vcard_url");
		}
		if(codeText.length > 0){
			codeText = "BEGIN:VCARD" + codeText;
			codeText += "\nVERSION:3.0";
			codeText += "\nEND:VCARD";
		}							
	}

	return codeText;
}

function getFieldVal (name) {
	return document.getElementById(name).value;
}

function getRadioValue() {
	return getCheckedValue(document.getElementById("form").typeRadio);
}

function getBarcodeType() {
	return getCheckedValue(document.getElementById("form").typeBarcode);
}

function updateRadioView() {
	hideAllInputs();
	document.getElementById("div_" + getRadioValue()).style.display = "block";
	updateCode();
}

function updateSizeView() {
	hideAllSize();
	document.getElementById("sizeselect_" + getBarcodeType()).style.display = "block";
	updateCode();
}

function updateBarcodeText() {
	hideBarcodeText();
	document.getElementById("barcodeText_" + getBarcodeType()).style.display = "block";
	document.getElementById("mobileCodeType_" + getBarcodeType()).style.display = 'inline';
	updateSizeView();
	updateCode();
}

function hideBarcodeText() {
	var divText = document.getElementById("barcodeTexts");
	for(var i = 0; i < divText.childNodes.length; i++){
		var text = divText.childNodes[i];
		if(text.nodeType == 1){
			text.style.display = "none";
		}
	}
	document.getElementById("mobileCodeType_dm").style.display = 'none';
	document.getElementById("mobileCodeType_qr").style.display = 'none';
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function hideAllInputs() {
	var divInputs = document.getElementById("inputs");
	for (var i=0;i<divInputs.childNodes.length;i++) {
		var oneEl = divInputs.childNodes[i];
		if (oneEl.nodeType == 1)
			oneEl.style.display = "none";
	}
}

function hideAllSize() {
	var divSize = document.getElementById("sizes");
	for(var i = 0; i < divSize.childNodes.length; i++){
		var size = divSize.childNodes[i];
		if(size.nodeType == 1){
			size.style.display = "none";
		}
	}
}
		

function init() {
	hideAllInputs();
	document.getElementById("div_" + getRadioValue()).style.display = "block";
	//updateRadioView();
	updateCounter(60, document.getElementById('in_link'), 'counter_link');
	updateCounter(60, document.getElementById('in_text'), 'counter_text');
	// init code in reload case
	updateCode();
	//checkTerms();
}

function checkTextLength(field) {
/*	var divWarn = document.getElementById("lenwarn");
	if (field.value.length > 40) {
		divWarn.style.display = "block";
	} else {
		divWarn.style.display = "none";
	}
*/
}

function hideLink() {
	document.getElementById("savedDiv").style.display = "none";
}


function save() {
	var name = document.getElementById("name").value;
	var codeImg = document.getElementById("code");
	var codeImgWithAParam = codeImg.src + "&a=view";
	document.getElementById("link").innerHTML = "<pre>" + "&lt;img src=\"" + codeImgWithAParam + "\" alt=\"" + name + "\" /&gt;"+"<\/pre>";
	document.getElementById("permalink").href = codeImgWithAParam;
	
	codeImg.src = codeImgUrl() + "&a=create";
	document.getElementById("savedDiv").style.display = "block";
}

function showInstructions() {
	/*if (getRadioValue() == "link") {
		document.getElementById("shortUrls").style.display = "block";
	} else {
		document.getElementById("shortUrls").style.display = "none";
	}*/
}

function changeCodeMode() {
	updateBarcodeText();
	if (getBarcodeType() == "dm") {
		document.codeForm.typeBarcode[1].checked = true
	}
	else{
		document.codeForm.typeBarcode[0].checked = true
	}
	updateBarcodeText()
	updateSizeView();
	updateCode();
	
}

/*
function checkTerms() {
	
	if (getCookie('terms')) {
		alert ('terms already accpeted');
	} else {
		alert ('Accept terms first');
	}
}
*/
window.onload = init;

