var FPOSTFIX=new Array(); // префиксы названия фреймов

var FHIDDEN=new Array(); // называния полей участвующих в параметрах выборки фрейма, но не являющиеся фреймами

var COLLS=new Array(); // сколькими столбцами выводить фильтр

var FRAMESCOUNT=0;



var VALUES=new Array(); // возможные переменные для передачи гетом, беруться из формы inst_form

var TVALUES=new Array(); // Темповые значения параметров фреймов, ассоциативный массив







// добавить постфикс названия фрейма

function AddFPOSTFIX(Name, Coll)

 {

	FPOSTFIX[FPOSTFIX.length]=Name;

	COLLS[COLLS.length]=Coll;

}







function GetFormValue(_formname, _name)

 {

	var f=document.forms[_formname] ;

	var inp=eval("document."+_formname+"."+_name);

	// var inp=eval(_formname+"."+_name) ;

	var Val;

	if (!inp) { return ""; }



	

	switch (true) {

		case ( inp.type == "text" ):

		case ( inp.type == "hidden" ):

			Val = inp.value ;

		break ;

		

		case ( inp.type == "select-one" ):

			//alert(inp.name+" "+inp.selectedIndex);



			if (inp.selectedIndex>-1)

				Val = inp.options[inp.selectedIndex].value ;

			else 

				Val = 0;

		break ;    

		

		case ( ( inp.length > 0 ) && ( inp[0].type == "radio" ) ): 

		case ( ( inp.length > 0 ) && ( inp[0].type == "checkbox" ) ):

			Val = new Array() ;

			for (var i=0; i<inp.length; i++ ) {

				if ( inp[i].checked ) {

					Val[Val.length] = inp[i].value ;

				} 

			}

			Val = Val.join(",") ;

		break ;

		

		case ( inp.type == "radio" ): 

		case ( inp.type == "checkbox" ):

			Val = ( inp.checked ) ? inp.value : "" ;

		break ;  

		

		default:

			Val = "";

		break ;  

	}

	

	return Val ;

}





/*

function AddValue(Name) { // то что будет передано гетом

	VALUES[VALUES.length]=Name;

}

*/







// задаём значения параметров, по имени гет-переменной

function SetTValue(Name, Value)

 {

	TVALUES[Name]=Value;

}





function GetTValue(Name)

 { // получаем значения параметров

	if (!TVALUES[Name]) { return 0; }

	else { return TVALUES[Name]; }

}





function GetQS()

 {

	var QS=new Array();







	// параметры формы

	for (var i=0; i<=VALUES.length-1; i++) {

		var U=GetFormValue("inst_form", VALUES[i]);

		if (U!="" && U!=0) { QS[QS.length]=VALUES[i]+"="+U; }

		

	}

	//alert("GetQS with out location");





	// параметры заданные вручную

	for (var Key in TVALUES) {

		var Flag=true;

		for (var i=0; i<=VALUES.length-1; i++) { 

			if (Key==VALUES[i]) { Flag=false; break; }

		}

		

		if (Flag==true) {

			U=TVALUES[Key];

			if (U!="" && U!=0) { QS[QS.length]=Key+"="+U; }

			

		}

	}   





	return QS;

}









// **************** новые названия старых функций ****************

// когда нибудь, мы перепишем весь яваскрипт встройки

// у нас по два названия одной и тойже функции, что бы все было в едином стиле :)



// субмит формы, отдаёт чистый "QUERY_STRING"

function inst_submit_all(URL, Mode)

 { 

	var QS=new Array();

	 QS=GetQS();

	 //alert(QS);

	 

	

	if (Mode=="popup") { window.opener.document.location=URL+"?"+QS.join("&"); self.close(); }

	else if (Mode=="new") { window.open(URL+"?"+QS.join("&"),""); }

	else if (Mode=="_top" || Mode=="_blank" || Mode=="_parent") { window.open(URL+"?"+QS.join("&"),Mode); }

	else { document.location=URL+"?"+QS.join("&"); }

}









// то что будет передано гетом, имена параметров

function inst_add_qs_name(Name)

 {

	VALUES[VALUES.length]=Name;

}





// функция вызываемая из фрейма, для смены значений

function inst_my_s(Filter, Element)

 {

	FRAMESCOUNT=1;

	inst_ch_values(Filter, Element);



	//ReloadFrames(Filter);

}



function inst_ch_values(Filter, Element)

 {

    A=new Array();

    S=new String(GetTValue(Filter));

    A=S.split(",");

    

    

    if (Element.checked==true) {

        A[A.length]=Element.value;

    }

    else {

        Z=new Array();

        for (i=0; i<=A.length-1; i++) {

            if (A[i]!=Element.value) { Z[Z.length]=A[i]; }

        }

        A=Z;

    }



    SetTValue(Filter, A.join(","));

}





// задаём значения параметров, по имени гет-переменной

// T - вроде значит TEMP :)

function inst_set_value(Name, Value)

 {

	SetTValue(Name, Value);

}





// добавить постфикс названия фрейма

function inst_add_frame_name(Name, Coll)

 {

	AddFPOSTFIX(Name, Coll);

}


