
function checkInput(obj,typ,fname) {
  var val = obj.value
  var ch = ""
  switch (typ)
  {
    case "date":
            //перебор символов
      for (var i = 0; i < val.length; i++) {
        ch = val.substr(i,1)
                    // если не цифра - убрать
        if ("0123456789.".indexOf(ch) < 0) { 
          obj.value = (obj.value).replace(ch,"")
        }
      }
      break
    case "int":
            //перебор символов
      var vlen = 0
        var r = true
        while(r) { 
           if (vlen == obj.value.length) {
               r = false
           }else{
               vlen = obj.value.length
               obj.value = obj.value.replace(" ","")
          }
       }
      for (var i = 0; i < val.length; i++) {
        ch = val.substr(i,1)
                    // если не цифра - убрать
        if ("0123456789".indexOf(ch) < 0) { 
          obj.value = ""
          alert("Field "+fname+" must be numeric.");
          obj.focus();
          //obj.value = (obj.value).replace(ch,"")
        }
      }
      break
    case "real":
        var vlen = 0
        var r = true
        while(r) { 
           if (vlen == obj.value.length) {
               r = false
           }else{
               vlen = obj.value.length
               obj.value = obj.value.replace(" ","")
           }
        }
        if (isNaN(obj.value)) {
            obj.value = ""
            alert("Field "+fname+" must be numeric.");
            obj.focus();
        }
        break  
    case "mail":
      if ( (obj.value).length > 0 ) {
        if ( (obj.value).indexOf("@") < 0 || (obj.value).indexOf(".") < 0 ) { 
          alert("Неверно указан EMail!")
          obj.focus()
        }
      }
      break
  }
}

function checkBlurDate(obj) {
  var sDate = obj.value
  if ( sDate.length > 0 ) {
    var d = sDate.split(".")
    if (d.length < 3) { 
      alert("Неверный формат Даты\n'ДД.ММ.ГГГГ'")
      obj.focus()
      return(0)
    }
    if ( d[0] > 31 || d[1] > 12 || d[2].length !== 4 ) {
      alert("Неверный формат Даты\n'ДД.ММ.ГГГГ'");
      obj.focus()
      return(0)
    }
  }
}

/*************************************************************************************************************/
/*  RETURN help text in the popup layer                                                                      */
/* In the Template file you can wtite next code                                                              */
/* <Div id='popHelp' style='POSITION:absolute;visibility:hidden;border:0px ridge;width:10'>                  */
/* <table border="0" cellpadding="0" cellspacing="0" width=164 height=133  background="images/bg_help.gif"> */
/* <tr>                                                                                                      */
/* <td id="txt"></td>                                                                                        */
/* </tr>                                                                                                     */
/* </table>                                                                                                  */
/* </DIV>
/*************************************************************************************************************/
function showHelp(obj,msg) {
  var point = fGetXY(obj);
  with (popHelp.style) {
        left = point.x+10;
        top  = point.y+obj.offsetHeight+1-10;
        visibility = 'visible';
  }
  document.all.txt.innerText = msg;
}

function fGetXY(aTag){
  var oTmp = aTag;
  var pt = new Point(0,0);
  do {
        pt.x += oTmp.offsetLeft;
        pt.y += oTmp.offsetTop;
        oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");
  return pt;
}

function Point(iX, iY){
        this.x = iX;
        this.y = iY;
}
/*****************************************/

function popUp(url,param) { newWindow = window.open(url,'newWindow',param); }


/*************************************************************************************************************/
/* Move values between select boxes*/
/*objfrom,objto - select objects*/
/*allrec -
         true - move all records
         false - move one record*/
/*************************************************************************************************************/

function move(objfrom, objto, allrec){

    if (allrec) {
        var ofl = objfrom.length
        for (var i = 0; i < ofl; i++) {
            objto.length++
            objto.options[objto.length-1].value = objfrom.options[0].value
            objto.options[objto.length-1].text = objfrom.options[0].text
            objfrom.options.remove(0)
        }
    } else {
        if (objfrom.selectedIndex >= 0) {
            objto.length++
            objto.options[objto.length-1].value = objfrom.options[objfrom.selectedIndex].value
            objto.options[objto.length-1].text = objfrom.options[objfrom.selectedIndex].text
            var si = objfrom.selectedIndex
            objfrom.options.remove(objfrom.selectedIndex)
            if (si < objfrom.length){
                objfrom.options[si].selected = true    
            }
            
        }else{
            alert("Select item!")
        }
    }
    
}

function InsertDate(obj,val,firstdaylastday){
////////firstdaylastday -- true : first day of week ;;; false : last day of week/////////
////////obj - input TEXT
////////val - obj.value
    //alert(obj.value.charAt(2)==".")
    //alert(obj.value.charAt(4)=="." && obj.value.charAt(2)=="." && isNaN(obj.value.substring(0,1)) == false && isNaN(obj.value.substring(3,4)) == false && isNaN(obj.value.substring(6,9)) == false)
    if (obj.value.legth != 0 ){
        if(obj.value.charAt(5)=="." && obj.value.charAt(2)=="." && isNaN(obj.value.substring(0,1)) == false && isNaN(obj.value.substring(3,4)) == false && isNaN(obj.value.substring(6,10)) == false && obj.value.substring(6,10).length == 4) {
            return true
        }
    }
    if (val.indexOf("w") != 0){
        obj.value = "";
        return false;
    }
    var week = val.substring(1,val.length)
    if (week.length == 0 || isNaN(week) == true){
        obj.value = "";
        return false;
    }
    if (week > 54) {
        alert ("Week no more 54.")
        return false;
    }
    var d = new Date((new Date()).getFullYear(),0,1)
    dayweek = d.getDay();
    while(dayweek != 1){
        d.setDate(d.getDate()-1);
        dayweek = d.getDay();
    }
    d.setDate(d.getDate()+(week-1)*7)
    if (firstdaylastday == false){
        d.setDate(d.getDate()+6)
    }
    if (d.getDate().toString().length == 1){
        obj.value = "0" + d.getDate()
    }else{
        obj.value = d.getDate()
    }
    obj.value += "."
    if ((d.getMonth()+1).toString().length == 1){
        obj.value += "0" + (d.getMonth()+1)
    }else{
        obj.value += d.getMonth()+1
    }
    obj.value += "."
    obj.value += d.getFullYear()
}

function checked(val){
    if (val=='1'){
        return "checked"
    }else{
        return ""
    }
}
function an(tdobj){
    stmas = document.all.ctinfo.value.split(",")
    var ctid = tdobj.id
    st = "<table class='ctTree' border=0  cellpadding=0 cellspacing=0>"
    for (i=0 ;i<stmas.length-1;i=i+4){
        if (stmas[i+2]==ctid){
            if (tdobj.innerHTML == '+&nbsp;'){
                subtreepref = "&ndash;&nbsp;"
                st += "<tr><td>&nbsp;&nbsp;</td><td><input name=ctid  type=Checkbox value=\"" + stmas[i+3] + "\" " + checked(stmas[i+1]) + ">" + stmas[i] + "</td></tr>"
            }else{
                subtreepref = "+&nbsp;"
                st = ""
                break;
            }
        }
    }
    if (st.length>0){st += "</table>"}
    tdobj.innerHTML = subtreepref
    tdobj.parentElement.nextSibling.firstChild.nextSibling.innerHTML = st
}
function anstatus(tdobj){
    stmas = document.all.ctstatusinfo.value.split(",")
    var ctid = tdobj.id
    st = "<table class='ctTree' border=0  cellpadding=0 cellspacing=0>"
    for (i=0 ;i<stmas.length;i++){
        if (tdobj.innerHTML == '+'){
                subtreepref = "&ndash;"
                st += "<tr><td>&nbsp;&nbsp;</td><td><input name=ctstatus  type=Checkbox value=\"" + stmas[i] + "\">" + stmas[i] + "</td></tr>"
            }else{
                subtreepref = "+"
                st = ""
                break;
            }
    }
    if (st.length>0){st += "</table>"}
    tdobj.innerHTML = subtreepref
    tdobj.parentElement.nextSibling.firstChild.nextSibling.innerHTML = st
}
function anaction(tdobj){
    stmas = document.all.ctactioninfo.value.split(",")
    var ctid = tdobj.id
    st = "<table class='ctTree' border=0  cellpadding=0 cellspacing=0>"
    for (i=0 ;i<stmas.length;i++){
        if (tdobj.innerHTML == '+'){
                subtreepref = "&ndash;"
                st += "<tr><td>&nbsp;&nbsp;</td><td><input name=ctaction  type=Checkbox value=\"" + stmas[i] + "\">" + stmas[i] + "</td></tr>"
            }else{
                subtreepref = "+"
                st = ""
                break;
            }
    }
    if (st.length>0){st += "</table>"}
    tdobj.innerHTML = subtreepref
    tdobj.parentElement.nextSibling.firstChild.nextSibling.innerHTML = st
}

function CheckAllLocations() {
	    for(i=locations.document.LocationList.lcid.length-1; i >= 0; i--) {
			locations.document.LocationList.lcid.options[i].selected = true;
		}
}

function ClearAllLocations() {
	    for(i=0; i<locations.document.LocationList.lcid.length; i++) {
			locations.document.LocationList.lcid.options[i].selected = false;
		}
}

function CheckDefaultLocations() {
	document.all.locationregions.selectedIndex = 0;
	locationcountries.location.href = 'common/locationcountries.asp?lcid=-1';
}

function BuildLocationString() {
	
	lcids = document.all.locationregions.value;
	SelectedLevel = 1;

	if  (document.locationcountries.LocationCountry.lcID.value != document.all.locationregions.value && document.locationcountries.LocationCountry.lcID.value.length > 0) {
		lcids = lcids + ',' + document.locationcountries.LocationCountry.lcID.value;
		SelectedLevel = 2;
	}
	
	if  (document.locationsubcountries.LocationSubCountry.lcID.value != document.locationcountries.LocationCountry.lcID.value && document.locationsubcountries.LocationSubCountry.lcID.value.length > 0) {
		lcids = lcids + ',' + document.locationsubcountries.LocationSubCountry.lcID.value;
		SelectedLevel = 3;
	}
	
	s = 0;
	if (document.all.cb_PoolLocation.value == 1) {
	    for(i=0; i<locations.document.LocationList.lcid.length; i++) {
		    if (locations.document.LocationList.lcid.options[i].selected) {
	    		if (lcids.length > 0) { lcids = lcids + ","; s++; }
			    lcids = lcids + locations.document.LocationList.lcid.options[i].value;
			}
	    }
	}
	
	if  (s > 0) {
		SelectedLevel = 4;
	}
	
	if (s > LocationsLimit) {
		alert("Select maximum " + LocationsLimit + " pool locations.");
		return false;
	}

	if ((RegionLimit == 1) && (SelectedLevel < 2)) {
		alert("Select country, soubcountry or pool locations.");
		return false;
	}
	
	document.all.lcid.value = lcids;
	return true;

}






//-------------------------- writeWeekChooser functions -----------------------------------



function updateDate(dateCtrl, weekCtrl, yearCtrl, addWeektoDate) {

	var d = new Date(yearCtrl[yearCtrl.selectedIndex].value, 0, 1);

    var dayweek = d.getDay();
    while(dayweek != 1){
        d.setDate(d.getDate()-1);
        dayweek = d.getDay();
    }

    d.setDate(d.getDate()+(weekCtrl[weekCtrl.selectedIndex].value - 1) * 7);
	

    if (addWeektoDate){
        d.setDate(d.getDate()+7);
    }

	var dateStr = "";
	
	dateStr = d.getFullYear() + ((d.getMonth()+1).toString().length == 1 ? "0" : "") + (d.getMonth()+1).toString() + (d.getDate().toString().length == 1 ? "0" : "") + d.getDate() ;
	dateCtrl.value = dateStr;
}


function fillWeekCtrl(weekCtrl, yearCtrl, dateCtrl, mode, addWeektoDate) {

	var yearStart, yearEnd, weekStart, weekEnd, d = new Date();

	switch (mode) {
		case 0:
			yearStart = d.getFullYear() - 10;
			yearEnd = d.getFullYear();
			break;
		case 1:
			yearStart = d.getFullYear() - 10;
			yearEnd = d.getFullYear() + 2;
			break;
		case 2:
			yearStart = d.getFullYear();
			d.setDate(d.getDate() + 7 * 8);
			yearEnd = d.getFullYear();
			break;
		case 3:
			yearStart = d.getFullYear() - 10;
			d.setDate(d.getDate() + 7 * 8);
			yearEnd = d.getFullYear();
			break;
	}

	var curYear = yearCtrl.value;
	
	var hiddenDate = new Date(dateCtrl.value.substr(0, 4), dateCtrl.value.substr(4, 2) - 1, dateCtrl.value.substr(6, 2));
	var hiddenWeekNo = weekNumberInYear(hiddenDate) - (addWeektoDate ? 1 : 0);
	

	//--- calculating first and last weeks in select depending on selected year and mode
	if (mode == 0) {
		if (yearEnd == curYear) {
			weekStart = 1;
			weekEnd = weekNumberInYear(new Date());
		}
		else {
			weekStart = 1;
			weekEnd = weekCountInYear(curYear);
		}
	}


	if (mode == 1) {
		weekStart = 1;
		weekEnd = weekCountInYear(curYear);
	}

	if (mode == 2) {
		if (yearStart == curYear) {
			weekStart = weekNumberInYear(new Date());
			if ( (weekNumberInYear(new Date()) + 8) < weekCountInYear(curYear) ) {
				weekEnd = weekNumberInYear(new Date()) + 8;
			}
			else {
				weekEnd = weekCountInYear(curYear);
			}
		}
		else {
			weekStart = 1;
			weekEnd = weekNumberInYear(new Date()) + 8 - weekCountInYear(curYear);
		}
	}

	if (mode == 3) {
			weekStart = 1;
			weekEnd = weekNumberInYear(new Date() + 8);

	}
	
/*	if (weekCtrl.length) {
	//--- clearing week select ---
		for (var i = weekCtrl.length - 1; i > 0; i--) {
			weekCtrl[i] = null;
		}
	}
	
*/
	//---filling week select---
	var j = 0;
	for (var i = weekStart; i <= weekEnd; i++)	 {
		var newOption = new Option("w " + i, i);
		weekCtrl[j++] = newOption;

		if ( (hiddenWeekNo == i) || (weekNumberInYear(hiddenDate) > weekEnd && i == weekEnd)  ) {
			weekCtrl[j-1] .selected = true; 
		}
	}

	//--- clearing week select ---
	for (var i = weekCtrl.length - 1; i >= j; i--) {
		weekCtrl[i] = null;
	}


}


function weekCountInYear(year) {
	var d = new Date(year, 0, 1), weeksCount = 0, dayweek = d.getDay();

    while(dayweek != 1){
        d.setDate(d.getDate()-1);
        dayweek = d.getDay();
    }

	while (d.getFullYear() <= year) {
		if (d.getDay() == 0) {weeksCount++;}
		d.setDate(d.getDate() + 1);
	}
	return weeksCount;
}


function weekNumberInYear(objDate) {
	var d = new Date(objDate.getFullYear(), 0, 1);
	var dayweek = d.getDay(), weekNo = 0;

    while(dayweek != 1){
        d.setDate(d.getDate()-1);
        dayweek = d.getDay();
    }	

	while (d.valueOf() <= objDate.valueOf()) {
		if (d.getDay() == 1) {weekNo++;}
        d.setDate(d.getDate() + 1);	
	}

	return weekNo;
}


//-------------------------- /writeWeekChooser functions -----------------------------------



// -------- options array object --------------

function optionsArr(ctrlName) {
	// properties
	this.optionsArray = new Array();
	this.controlName = ctrlName;

	// methods
	this.selectAll = oA_selectAll;
	this.deselectAll = oA_deselectAll;
	this.selectFav = oA_selectFav;
	this.fillControl = oA_fillControl;
}


function oA_selectAll() {
	for (var i = 0; i < this.optionsArray.length; i++) {
	this.controlName[i].selected = true;
	}
}
function oA_deselectAll() {
	for (var i = 0; i < this.optionsArray.length; i++) {
	this.controlName[i].selected = false;
	}
}
function oA_selectFav() {
	for (var i = 0; i < this.optionsArray.length; i++) {
	this.controlName[i].selected = this.optionsArray[i][2];
	}
}
function oA_fillControl() {
	for (var i = 0; i < this.optionsArray.length; i++) {
		var newOption = new Option(this.optionsArray[i][1], this.optionsArray[i][0]);
		this.controlName[i] = newOption;

		if (this.optionsArray[i][3]) {
			this.controlName[i].selected = true;
		}

	}
}
// -------- /options array object --------------
