

/*-----------------------AUXILARY---------------------------*/

function appendValue (value, inputId) {

	var	hiddenInput = document.getElementById(inputId);
	hiddenInput.value = value;
}

function appendValueToGetRequest (name, value) {

	//㤠���� ��� �㭪�� ��䨣!
	var str = name + '/'+ value + '/';
	window.location = window.location + str;
	alert(window.location);
}


function getElt (id) {
	$elt = document.getElementById (id);
	return $elt;
}


function setContent(divId, content) {
   	var div_ = document.getElementById(divId);
    div_.innerHTML = content;
}

function addContent(divId, content) {
   	var div_ = document.getElementById(divId);
    div_.innerHTML = div_.innerHTML + '<br />' + content;
}


function blockAllButtons() {

    var inputs = document.getElementsByTagName('input');
    if (inputs) {
       for (var i = 0; i < inputs.length; i++) {
       		if (inputs[i].type == 'submit') {
       		    inputs[i].disabled = true;
//       		    alert(inputs[i].name);
       		}
       }
    }
    var buttons = document.getElementsByTagName('button');
    if (buttons) {
        for (var i = 0; i < buttons.length; i++) {
   		    buttons[i].disabled = true;
  // 		    alert(buttons[i].name);
        }
    }
}

function hideName(button) {

	var name = button.name;
	var hidden = getElt(name);
	hidden.name = name;
}


/*--------------------------FILTERS--------------------------------*/

function changeFilterStatus (fieldId) {

	var filterStatusInput = getElt(fieldId);
	filterStatusInput.value = (filterStatusInput.value == 'true') ? 'false' : 'true';
}

/*-----------------Categories------------------------------------------------------*/

function handleElementChange (hiddenFieldId, promptMessage, emptyNewNameWarningMsg) {

    var hiddenField = getElt(hiddenFieldId);
    if (hiddenField) {
       	var newName = prompt(promptMessage, '');
       	if (newName) {
       		hiddenField.value = newName;
       		return true;
       	} else if (newName === null) {
            return false;
       	} else {
       	    alert (emptyNewNameWarningMsg);
	    	return false;
   		}
   	}
}

/*--------------------------GAMES--------------------------------*/

	function handleGameType() {

		var typeSelect = getElt('type');
		var entryCostTr = getElt('maxEntryCostTr');
		var opt = typeSelect.options;
		for (var i = 0; i < opt.length; i++) {
			if (opt[i].value == 'real_money') {
				if (opt[i].selected) {
					entryCostTr.style.visibility = 'visible';
				} else {
                	entryCostTr.style.visibility = 'hidden';
                }
            }
		}
	}

/*--------------------------GAMES--------------------------------*/

function handleTournamentType () {

}

/*--------------------------Projects--------------------------------*/


function autoSumm () {

	var hardF = getElt('hardQuestionNumber');
	var easyF = getElt('easyQuestionNumber');
	var mediumF = getElt('mediumQuestionNumber');
	var totalF = getElt('totalQuestionNumber');

	if (parseInt(hardF.value)) {
		var hard = parseInt(hardF.value);
	} else {
	    var hard = 0;
	    hardF.value = 0;
	}
	if (parseInt(easyF.value)) {
		var easy = parseInt(easyF.value);
	} else {
	    var easy = 0;
	    easyF.value = 0;
	}
	if (parseInt(mediumF.value)) {
		var medium = parseInt(mediumF.value);
	} else {
	    var medium = 0;
	    mediumF.value = 0;
	}
	totalF.value = hard + easy + medium;
}

function hanldePrivateLabeling () {

	var tag = getElt('partnerTag');
	var isPL = getElt('isPrivateLabel');

	if (!isPL.checked)  {
	    tag.value = "";
		tag.readOnly = "true";

	} else {
		tag.readOnly = "";
	}
}
// -----------------------Question-----------------------------------------------------
function moveItems(fromListId, toListId) {

    fromList = document.getElementById(fromListId);
    toList = document.getElementById(toListId);
    while (fromList.selectedIndex != -1)
    {
        toList.options[toList.length] = new Option(fromList.options[fromList.selectedIndex].text, fromList.value);
        fromList.remove(fromList.selectedIndex);
    }
}

function moveAllItems(fromListId, toListId) {

    fromList = document.getElementById(fromListId);
    toList = document.getElementById(toListId);
    for (var i = 0; i < fromList.options.length; i++)
    {
        toList.options[toList.length] = new Option(fromList.options[i].text, fromList.options[i].value);
    }
    while (fromList.options.length)
    {
        fromList.remove(0);
    }
}

function setIds(resultId, resourceId) {

    result = document.getElementById(resultId);
    resource = document.getElementById(resourceId);

    res = new Array();
    while (resource.length)
    {
        res.push(resource.options[0].value);
        resource.remove(0);
    }
    result.value = res;
}
/*-------------------Handle Element Ids Selection------------*/

function handleElementIdsSelection (thisLink, isConfirm, listId, confirmMsg, warningMsg) {

     /*
     	variables:
     	thisLink - this;
     	isConfirm - true/false;
     	listId - 'resultTable'
     	confirmMsg, warningMsg - localed strings
     */
	//���� ࠡ�⠥� ��� ��ਠ�� html ����� FindEngine

	var elementIds = getElementIds (listId);
	if (elementIds)  {
		// we append elements and send form only if deleting is confirmed
		if (!isConfirm || isConfirm && confirm(confirmMsg)) {
  			 //appendValue (elementIds, inputId);
  			return true;
		} else {
			return false;
		}
	} else {
	   	alert (warningMsg);
    	return false;
	}
}

function getElementIds (listId) {

	/*this function parse the given table (element list) and
		return the string of coma separated ids (or an empty string)*/
	var elementList = getElt(listId);
	var inputs = elementList.getElementsByTagName('input');
	var ids = '';
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].type == 'checkbox') {
			if (inputs[i].name =='rowKey[]' && inputs[i].checked) {
    				if (inputs[i].value) {/*to not to add 'selectAll' checkbox to ids*/
    					ids += inputs[i].value + ',';
    				}
			}
		}
	}
	ids = ids.substr(0, ids.length - 1);// we cut last coma
	return ids;
}

function getOneElementId (listId) {

	/*this function parse the given table (element list) and
		return the string id (or an empty string)*/
	var elementList = getElt(listId);
	var inputs = elementList.getElementsByTagName('input');
	var id = '';
	for (var i in inputs) {
		if (inputs[i].type == 'checkbox') {
			if (inputs[i].name =='rowKey[]' && inputs[i].checked) {
				if (inputs[i].value) {/*to not to add 'selectAll' checkbox to id*/
					return inputs[i].value;
				}
			}
		}
	}
}

/* ��� 㤠���� �᫨ 㦥 �� �㦭�*/

function isDel(name) {

	if (name.indexOf('delete') > -1 || name.indexOf('Delete') > -1) {
		return true;
	} else {
		return false;
	}
}
/************************     SERVER MESSAGES     *******************************************/

function showServerResultMsg (msg) {

	clearDiv('serverResultMsg');

	var msgDiv = getElt('serverResultMsg');
  	msgDiv.innerHTML = msg;

    setTimeout(function() {setEmptyDiv('serverResultMsg');}, 3000);
}


function clearDiv (divId) {

	var divElt = getElt(divId);
	if (divElt.innerHTML) {
		divElt.innerHTML = "";
	}
}

function setEmptyDiv (divId) {

	var divElt = getElt(divId);
	if (divElt.innerHTML) {
		divElt.innerHTML = "&nbsp;";
	}
}

/************************     HIDE/SHOW elements    *******************************************/

function changeAppearens(divId, button) {

	var divElt = getElt(divId);

	if (divElt) {
		var  status =  divElt.className;// change this function later if elements will has more than one class
		if (status == 'expanded') {
			divElt.className = 'collapsed';
			button.innerHTML =  locale['expand'];
 	    } else if (status == 'collapsed')  {
			divElt.className = 'expanded';
			button.innerHTML =  locale['collapse'];
		}
	}
}

/*************************************************************************/

// ��o ����� ��।����� �  selectAllElements (checkboxToInvert, listId)
//��ᬮ���� -- �ᯮ������ �� ���.!!
function selectAllQuestions (checkbox, listId) {

	var projectQuestions = getElt(listId);
	var inputs = projectQuestions.getElementsByTagName('input');
	for(var i in inputs) {
		if (inputs[i].type == 'checkbox') {
			inputs[i].checked = !(inputs[i].checked);
		}
	}
	checkbox.checked = !(checkbox.checked);
}


/****************Handle values****************************---*/

function checkBorders (input, checkMin, checkMax, minValue, maxValue) {

   		var id = input.id;
   		if (input.value != '') {
   		    /*
     		var inputValue = parseFloat(input.value);
     		if (input.value != inputValue.toString()) {
     			alert(locale['sholdBeNumber']);
     			input.value = 0;
     		}*/

   		    inputValue = parseFloat(input.value);
   		    if (isNaN(inputValue)) {
   		        alert(locale['sholdBeNumber']);
   		        input.value = 0;
   		    }

        	if (checkMax && inputValue > maxValue) {
      			alert(locale['toLarge'] + maxValue);
      			input.value = maxValue;
      		}

      		if (checkMin && inputValue < minValue) {
      			alert(locale['toSmall'] + minValue);
      			input.value = minValue;
      		}
     	}
 }

/*****************-----------Handle Saving-----------------------------------*/


function handleGameSaving () { return handleObjectSaving ();}



/*--------------------------Handle Saving  OBLJECT---------------------*/
//to improve this class tou may add the regex checking
var SavingObject = new Object();

function handleObjectSaving () {
    /**/
	SavingObject.errors = [];
	SavingObject.inputs = [];
	SavingObject.textareas = [];
	SavingObject.typeCheckedFields = [];
	SavingObject.selects = [];
	SavingObject.checkResult = true;
	SavingObject.radios = {}; //important! this is an object

	SavingObject.clearWarnings();

	SavingObject.findParams();

	SavingObject.checkInputs();
	SavingObject.checkTextareas();
	SavingObject.checkSelects();
	SavingObject.checkRadios();
	SavingObject.checkTypeCheckedFields();
	if (SavingObject.checkResult == false) {
		SavingObject.drawWarnings();
//		SavingObject.warningUser();
		return false;
	} else {
		return true;
	}
/*	*/
//	return true;
}

SavingObject.findParams = function() {
//function parses the htmp, add inputs and selects with className == 'notNullVerificable'
//to chacking arrays of this class.
	var inputs = document.getElementsByTagName('input');
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].className == 'notNullVerificable' && inputs[i].type == 'text') {
			this.inputs.push(inputs[i]);
		}
		if (inputs[i].getAttribute('expectedType')) {
			this.typeCheckedFields.push(inputs[i]);
		}
		if (inputs[i].className == 'notNullVerificable' && inputs[i].type == 'radio') {
   			var radioName = inputs[i].name;

   			if (this.radios[radioName] == null) this.radios[radioName] = new Array();

			this.radios[radioName].push(inputs[i]);
      	}

	}
	var selects = document.getElementsByTagName('select');
	for (var i = 0; i < selects.length; i++) {
		if (selects[i].className == 'notNullVerificable') {
			this.selects.push(selects[i]);
		}
	}

	var textareas =  document.getElementsByTagName('textarea');
	for (var i = 0; i < textareas.length; i++) {
		if (textareas[i].className == 'notNullVerificable') {
			this.textareas.push(textareas[i]);
		}
	}
}


SavingObject.checkInputs = function() {

//Function checks all this.inputs and adds input id to this.errors, if value is empty.
	if (this.inputs.length) {
		for (var i = 0; i < this.inputs.length; i++) {
			if (this.inputs[i].value == '') {
				this.errors.push (this.inputs[i].id);
				this.checkResult = false;
			}
		}
	}
}

SavingObject.checkTextareas = function() {

//Function checks all this.textareas and adds textarea id to this.errors, if value is empty.
	if (this.textareas.length) {
		for (var i = 0; i < this.textareas.length; i++) {
			if (this.textareas[i].value == '') {
				this.errors.push (this.textareas[i].id);
				this.checkResult = false;
			}
		}
	}
}


SavingObject.checkRadios = function() {

	for (var i in this.radios) {
		var val = 0;
		for (var j = 0; j < this.radios[i].length; j++) {
			if (this.radios[i][j].checked) {  val = 1;	}
		}
		if (!val) {
			this.errors.push(i);//not id in this case 'cause name is (for instanse) right quwstion number, and ids are 1 ,2,..
			this.checkResult = false;
		}
	}
}



SavingObject.checkTypeCheckedFields = function() {

/*Function checks all this.checkTypeCheckedFields and
  adds checkTypeCheckedField id to this.errors,
  if value is not empty but has wrong type.
 */
	if (this.typeCheckedFields.length) {
		for (var i = 0; i < this.typeCheckedFields.length; i++) {
			if (this.typeCheckedFields[i].value != '') {
				var et = this.typeCheckedFields[i].getAttribute('expectedType');
				var fieldValue = this.typeCheckedFields[i].value;
   	      		if (et == 'integer') {
   	      			if (parseInt(fieldValue) != fieldValue) {
   	      				this.errors.push (this.typeCheckedFields[i].id);
   						this.checkResult = false;
   					}
   	      		}
   	      		if (et == 'number') {
   	      			if (parseFloat(fieldValue) != fieldValue) {
   	      				this.errors.push (this.typeCheckedFields[i].id);
   						this.checkResult = false;
   					}
   	      		}
			}
		}
	}
}



SavingObject.checkSelects = function() {

 //This function gets all options of each select from this.selects array.
 //Function adds select id to this.errors, if empty value is selected.
 	if (this.selects.length) {
		for (var i = 0; i < this.selects.length; i++) {
			var options = this.selects[i].options;
			var isNotEmptyValueSelected = false;
			for (var j = 0; j < options.length; j++) {
				//alert('value=' + options[j].value );
				if (options[j].selected == true && options[j].value != '') {
					isNotEmptyValueSelected = true;
				}
			}
			if (isNotEmptyValueSelected == false) {
				this.errors.push(this.selects[i].id);
				this.checkResult = false;
			}
		}
	}
}




SavingObject.warningUser = function () {

	if (this.errors.length) {
		alert (locale['isWrong']);
	}
	for (var i = 0; i < this.errors.length; i++) {
		var localeVarName = this.errors[i];//alert(this.errors[i]);
		alert ('the  ' + locale[localeVarName] + '  field');
	}


}

SavingObject.drawWarnings = function () {

  if (this.errors.length) {
  	var warDiv = document.getElementById("warnings");

 	var isWrong = document.createElement("P");
  	isWrong.innerHTML = locale['isWrong'] + "<br/>";
    warDiv.appendChild(isWrong);

    for (var i = 0; i < this.errors.length; i++) {
		var localeVarName = this.errors[i];
		var err = document.createElement("div");
		//alert(localeVarName+ '=' +locale[localeVarName]);
		err.innerHTML = locale[localeVarName] + "<br/>";
		warDiv.appendChild(err);
    }
    warDiv.scrollIntoView();
   }
}

SavingObject.clearWarnings = function () {

	var warDiv = document.getElementById("warnings");
	if (warDiv.innerHTML) {
		warDiv.innerHTML = "";

	}
}
/*---------------------------Categories in Question------------------------------*/

var CategoriesObject = new Object();

function loadCategories (tiedSubcategories) {
	CategoriesObject.tiedSubcategories  = tiedSubcategories;
}

function changeSubcategoryList () {
	CategoriesObject.changeSubcategoryList();
}

CategoriesObject.changeSubcategoryList = function () {

	var catList = getElt('categoryId');
	var catId = catList.options[catList.selectedIndex].value;
	var subCatList = getElt('subcategoryId');

	subCatList.innerHTML = "";
	if (this.tiedSubcategories[catId]) {
		var opt = document.createElement("option");
//		opt.setAttribute('value', '');
//		opt.innerHTML = '--';
//		subCatList.appendChild(opt);
		for (var i in this.tiedSubcategories[catId]) {
		    if ("string" == typeof this.tiedSubcategories[catId][i])
            {
				var opt = document.createElement("option");
				opt.setAttribute('value', i);
				opt.innerHTML = this.tiedSubcategories[catId][i];
				subCatList.appendChild(opt);
			}
		}
	}
}






