/**
 * button login - show win forms auth <input type="button" id="btAuthShow"
 * value="logowanie"/>
 */
var loginWinwos;
var btDisp;
var fsauth;
var isValidA = false;
Ext.onReady(function() {
	// containert content window
		createWindowsContent();
		// form login
		fsauth = new Ext.FormPanel(
				{
					labelWidth : 80,
					url : 'index.php',
					frame : true,
					title : 'Autoryzacja',
					defaultType : 'textfield',
					monitorValid : true,
					// Specific attributes for the text fields for username /
					// password.
					// The "name" attribute defines the name of variables sent
					// to the server.
					items : [ {
						fieldLabel : 'Username',
						name : 'loginUsername',
						allowBlank : false
					}, {
						fieldLabel : 'Password',
						name : 'loginPassword',
						inputType : 'password',
						allowBlank : false
					} ],

					// All the magic happens after the user clicks the button
					buttons : [
							{
								text : 'close',
								handler : function() {
									loginWinwos.hide();
								}
							},
							{
								text : 'Login',
								formBind : true,
								// Function that fires when user clicks the
								// button
								handler : function() {
									fsauth.getForm().submit(
									{
										params : {
										snd : 'auth'
									},
									method : 'POST',
									waitTitle : 'Connecting',
									waitMsg : 'Sending data...',
									success : function(form,action) {
										isValidA=true;
										Ext.Msg.alert('Status','Login Successful!',function(btn,text) {
											if (btn == 'ok') {
												loginWinwos.hide();
											}
									});
									fsauth.getForm().reset();
								},
									failure : function(form, action) {
											isValidA=false;
											if (action.failureType == 'server') {
												var obj = Ext.util.JSON.decode(action.response.responseText);
												Ext.Msg.alert('Login Failed!',obj.errors.reason);
											} else {
												Ext.Msg.alert('Warning!','Authentication server is unreachable : ' + action.response.responseText);
											}
											fsauth.getForm().reset();
									}
								});
							}
					}]
				});

		/**
		 * fsauth.on({ actioncomplete: function(form, action){ if(action.type ==
		 * 'load'){ submit.enable(); } } });
		 */

		// create the window on the first click and reuse on subsequent clicks
		if (!loginWinwos) {
			loginWinwos = new Ext.Window( {
				layout : 'fit',
				width : 300,
				height : 150,
				id : 'loginWin',
				closable : false,
				resizable : false,
				plain : true,
				border : false,
				items : [ fsauth ]
			});
		}
		showFormSearch();
		/** zaladowanie danych do szablonu po starcie serwisu z pustym wzorcem */
		send('loadedtemplate'); 
});

function send(sndId) {
	/**
	 * ajax na starcie strony
	 */
	Ext.Ajax.request( {
				url : 'index.php',
				method : 'POST',
				params : {
					snd : sndId
				},
				success : function(msg) {
					// var obj = Ext.util.JSON.decode(msg.responseText);
					// parsowanie danych
					parseDataDOM(msg.responseText);
					/*Ext.each(obj.section.midleft, function(rec, index) {
					});*/
				}
			});
}
var contentSitesWin;
var containerContent;
function createWindowsContent() {
	if (!contentSitesWin) {
		contentSitesWin = new Ext.Window( {
			applyTo : 'newsContainer',
			layout : 'fit',
			width : 750,
			height : 540,
			closeAction : 'hide',
			closable : true,
			resizable : true,
			plain : true,
			border : true,
			autoScroll : true,
			shadow : true,
			shadowOffset : 7
		});
	}
}

function btnpost(e) {
	var sidId = (e.id?e.id:e);
	var sndId = 'getsites'; // getsites
	var scmId = '-';
	if (isValidA) {
		sndId = 'getEditsites';
	}
	Ext.Ajax
			.request( {
				url : 'index.php',
				method : 'POST',
				params : {
					snd : sndId,
					sid : sidId,
					scm : scmId
				},
				success : function(msg) {
					parseDataDOM(msg.responseText);
				}
			});
}
/**
 * okno na nwes z poprzedniej wersji systemu
 * @param idNewSelect
 * @param idHeadSelect
 * @param idContentSelect
 * @return window object
 */
function fromExistContent(idNewSelect, idHeadSelect, idContentSelect) {
	contentSitesWin.hide();
	contentSitesWin.update(document.getElementById(idContentSelect).innerHTML);
	contentSitesWin.show();
}

var obEd;
/**
 * get document to edit
 * @param rec doc id
 * @return windows object
 */
function getSiteToEdit(rec) {
	// pobranie tresci strony i wlozenie danych do formularza
	if(isValidA){
		Ext.Ajax.request( {
			url : 'index.php',
			method : 'POST',
			params : {
				snd : 'getEditsites',
				sid : rec,
				scm : 'edits'
			},
			success : function(msg) {
				parseDataDOM(msg.responseText);
			}
		});
	}
}
// myXML Reader
function parseDataDOM(resData){
	var roots;
	var browserType;
	var xmldom;
	var cmJs=new Array();
    if ( window.DOMParser ) {
        var xmldom = new DOMParser();
		// xmldom.async = false;
        var dom = xmldom.parseFromString( resData.trim(), "application/xml" );
        if ( ! dom ) return;
        roots = dom.documentElement;
        browserType=true;
    } else if ( window.ActiveXObject ) {
        xmldom = new ActiveXObject('Microsoft.XMLDOM');
        xmldom.async = false;
        xmldom.loadXML( resData.trim() );
        roots = xmldom.documentElement;
        browserType=false;
    }
	var rootNode=roots.getElementsByTagName('section');
	var i = 0;

	for (i=0;i<rootNode.length;i++) {
		// odebranie polecen javascript do tablicy z sekcji danych
		// var cmJsc=rootNode[i].getElementsByTagName('runjs');
		var field=rootNode[i].getAttribute('fields');
		var tagsi=rootNode[i].getAttribute('type'); 
		var tagnm=rootNode[i].getAttribute('name');

		if(tagsi=='html'){
			// standardowe dzialanie strony
			// wstawianie zawartosc do podanych sekcji strony w paramtrze field
			// jesli istnieje taki element
			if(document.getElementById(field)){
				if(rootNode[i].hasChildNodes()){
					var j=0;
					var sub=rootNode[i].childNodes;
					for(j=0;sub.length;j++){
						try{
							var s='';
							var d='';

							if((sub[j].getAttribute('isEdit')=='yes') && (sub[j].getAttribute('types')=='content') ) {
								document.getElementById('side').innerHTML+=sub[j].getAttribute('idtree');
								s='<div><div style="text-align: right;"><button type="button" style="cursor:pointer;font-size:12px;color:red;" onclick="getSiteToEdit('+sub[j].getAttribute('idtable')+');" >edycja</button></div><div>';
								d='</div></div>';;
							} else {
								s='';
								d='';
							}
						    if(sub[j].getAttribute('update')=='replace'){
								document.getElementById(field).innerHTML='';
								document.getElementById(field).innerHTML=s+sub[j].childNodes[0].nodeValue+d;
							} else {
								document.getElementById(field).innerHTML+=s+sub[j].childNodes[0].nodeValue+d;
							}
							if(field=='menuindex') initSlideDownMenu('menuindex'); // inicjalizacjew menu glownego strony
						} catch (err){
							break;
						}
					}
				}
			}
		}
		if((tagsi=='edit') && (tagnm=='site') && (field=='dataSite')){
			// dane dla edytorow
				// edycja tresci strony
				document.getElementById('dataSite').innerHTML='';
				// przekazanie danych do edytora
				// standardowe dzialanie strony
				// wstawianie zawartosc do podanych sekcji strony w paramtrze field
				// jesli istnieje taki element
					if(rootNode[i].hasChildNodes()){
						var j=0;
						var sub=rootNode[i].childNodes;
						var myp={};
						for(j=0;sub.length;j++){
							try{
								// items - pol edytora
								switch (sub[j].nodeName) {
								case 'stnazwa':
									myp.stnazwa=sub[j].childNodes[0].nodeValue;
									break;
								case 'numer':
									myp.numer=sub[j].childNodes[0].nodeValue;
									break;
								case 'lp':
									myp.lp=sub[j].childNodes[0].nodeValue;
									break;
								case 'idtree':
									myp.idtree=sub[j].childNodes[0].nodeValue;
									break;
								case 'wazneod':
									myp.wazneod=sub[j].childNodes[0].nodeValue;
									break;
								case 'waznedo':
									myp.waznedo=sub[j].childNodes[0].nodeValue;
									break;
								case 'tresc':
									myp.tresc=sub[j].childNodes[0].nodeValue;
									break;
								case 'idsite':
									myp.idsite=sub[j].childNodes[0].nodeValue;
									break;
								case 'idtable':
									myp.idtable=sub[j].childNodes[0].nodeValue;
									break;
								case 'ststatus':
									myp.ststatus=sub[j].childNodes[0].nodeValue;
									break;
								case 'menu':{
										// menu dostepne w systemie dla redaktorow
										// parsowanie kodu JSON
										myp.dataTree=Ext.util.JSON.decode(sub[j].childNodes[0].nodeValue);
									}
									break;
								}
								// wywolanie edytora
							} catch (err){
								break;
							}
						}
						editDoc(myp);
					}
		}
		if((tagsi=='edit') && (tagnm=='new') && (field=='dataSite')){
			// dane dla edytorow
				// edycja tresci strony
				document.getElementById('dataSite').innerHTML='';
				// przekazanie danych do edytora
				// standardowe dzialanie strony
				// wstawianie zawartosc do podanych sekcji strony w paramtrze field
				// jesli istnieje taki element
					if(rootNode[i].hasChildNodes()){
						var j=0;
						var sub=rootNode[i].childNodes;
						var myp={};
						for(j=0;sub.length;j++){
							try{
								// items - pol edytora
								switch (sub[j].nodeName) {
								case 'menu':{
										// menu dostepne w systemie dla redaktorow
										// parsowanie kodu JSON
										myp.dataTree=Ext.util.JSON.decode(sub[j].childNodes[0].nodeValue);
									}
									break;
								}
							} catch (err){
								break;
							}
							myp.stnazwa='';
							myp.numer='';
							myp.lp='9999';
							myp.idtree='idtree';
							myp.wazneod='20100101';
							myp.waznedo='30000101';
							myp.tresc='';
							myp.idsite=0;
							myp.idtable=0;
							myp.ststatus=1;
						}
						editDoc(myp);
					}
		}
		if((tagsi=='search') && (tagnm=='site')){
			var j=0;
			var sub=rootNode[i].childNodes;
			var obj=[];
			var t;
			t='<div style="width:100%;height:auto;text-align:center;font-size:16px;font-family:Tahoma;margin:20px;">' +
			'Wyniki wyszukiwania </div>';
			obj.push({'html':t});
			for(j=0;sub.length;j++){
				try{
					var idtree=sub[j].getAttribute('idtable');
					/** osadzenie tresci w ramce */
					t='<div style="width:100%;height:auto;text-align:left;font-size:11px;font-family:Tahoma;">' +
							'<div style="width:100%;height:auto;text-align:right;font-size:10px;font-family:Tahoma;"><div class="buttonRestText" onclick="btnpost('+idtree+');" align="center">zobacz dokument</div></div>' +
							'<div class="contentShortNewsTemplate">' + sub[j].childNodes[0].nodeValue + '</div></div>';
					obj.push({'html':t});
				} catch (err){
					break;
				}
			}
			searchresult(obj,'dataSite'); // pokaz wyniki wyszukiwania
		}
		if((tagsi=='info') && (tagnm=='site')){
			// komunikaty
			/*
			Ext.Msg.alert('Status','Dane zapisane',function(btn,text) {
				if (btn == 'ok') {
				}
			});
			*/
		}
	}
}
/** uruchomienie edytora nowego dokumentu */
function newDoc(){
	if(isValidA==true){
		getSiteToEdit('--new--');
		editDoc(myp);
	} else {
		Ext.Msg.alert('error','this not login');
	}
}
/** button bar pod news-ami */
function bargetste(e) {
	var sidId = e;
	var sndId = 'getsites'; // getsites
	var scmId = '-';
	if (isValidA) {
		sndId = 'getEditsites';
	}
	Ext.Ajax
			.request( {
				url : 'index.php',
				method : 'POST',
				params : {
					snd : sndId,
					sid : sidId,
					scm : scmId
				},
				success : function(msg) {
					parseDataDOM(msg.responseText);
				}
			});
}
/** pokazanie pelnej tresci news-a */
function getExistDocument(event){
	var idobj = event.id;
	var values = event.getAttribute('idsite');
	bargetste(values);
}
/* operacja na lancuchach */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.unescSpace = function(){
	return this.replace(/\+/g," ");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}
function fltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function frtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
