/*
 *
 * SWFinjector 1.0: Ajax solution for Flash content managment using HTML-based CMS
 * Copyright 2010-2011 Zarko Trosic. All Rigths Reserved.
 *
 */

var flashHolder;
var cmsHolder;
var flashInstance;
var http = false;

function SWFinjectorSetup( f, c, i ) {

	flashHolder = f;
	cmsHolder = c;
	flashInstance = i;

}

function getFlashMovie(movieName) {   
	
	var isIE = navigator.appName.indexOf("Microsoft") != -1;   
	return (isIE) ? window[movieName] : document[movieName];  
}

// this function is called from flash with link to php request
function sendRequestToCMS( xmlRequest ) {

  var http = false;

  if(navigator.appName == "Microsoft Internet Explorer") {
	  http = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
	  http = new XMLHttpRequest();
  } 

  // xmlRequest is for example 'view.php?id=50'
  http.open("GET", xmlRequest, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      
	  document.getElementById( flashHolder ).style.top = '-10000px';
	  document.getElementById( cmsHolder ).innerHTML = http.responseText;
	  document.getElementById( cmsHolder ).style.visibility = 'visible';
	  
    }
  }
  
  http.send(null);
  
}


function doAJAXSubmit( form ) {
	
	 var query = buildQuery(form); 
	 doAjaxRequest( form.method, form.action, query);
}

function doAjaxRequest( method, url, query ) {

  if(navigator.appName == "Microsoft Internet Explorer") {
	  http = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
	  http = new XMLHttpRequest();
  } 

  if(method.toLowerCase() == 'get') url = url+"?"+query;
  
  http.open(method, url, true);
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
  http.onreadystatechange= onStateChange;
  
  http.send(query);

}

function onStateChange() {

  if(http.readyState == 4) {
       
	  var str = http.responseText;
	  
	  //alert( str.charAt(0)+":"+str.substring(1,str.length) );
	  
	  if( str.charAt(0) == '0' ) LinkCMS(str.substring(1,str.length));
	  else if( str.charAt(0) == '1' ) LinkFlash(str.substring(1,str.length));
	  else document.getElementById( cmsHolder ).innerHTML = str;
	  
	  // Prvi karakter je 0/1URL
	  // 0 - otvori CMS div sa novim url
	  // 1 - flash link
	  //onda pozovi LinkFlash(url) ili LinkCMS(url)
	  
  }

}

// kupi sve elemente forme i njihove value-ove i pravi query string
function buildQuery(form) {
	
	var query = "";
	for(var i=0; i<form.elements.length; i++)
	{
		var key = form.elements[i].name;
		var value = getElementValue(form.elements[i]);
		if(key && value)
		{
			query += key +"="+ value +"&";
		}
	}
	
	return query;
}

function getElementValue(formElement) {
	
	if(formElement.length != null) var type = formElement[0].type;
	if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;

	switch(type)
	{
		case 'undefined': return;

		case 'radio':
			for(var x=0; x < formElement.length; x++) 
				if(formElement[x].checked == true)
			return formElement[x].value;

		case 'select-multiple':
			var myArray = new Array();
			for(var x=0; x < formElement.length; x++) 
				if(formElement[x].selected == true)
					myArray[myArray.length] = formElement[x].value;
			return myArray;

		case 'checkbox': return formElement.checked;
	
		default: return formElement.value;
	}
	
}

function cancelForm() {
	
	 document.getElementById( cmsHolder ).innerHTML = "";
	 document.getElementById( cmsHolder ).style.visibility = 'hidden';
	 document.getElementById( flashHolder ).style.top = '0px';
	 
}

//okinem flash stranu
function LinkFlash(url) {
	
	 document.getElementById( cmsHolder ).innerHTML = "";
	 document.getElementById( cmsHolder ).style.visibility = 'hidden';
	 document.getElementById( flashHolder ).style.top = '0px';
	 getFlashMovie(flashInstance).reloadPage(url);
	 //go to anchore...
}

//Okinem svoj cms url
function LinkCMS(url) {
	
	 //document.getElementById( cmsHolder ).innerHTML = "";
	// document.getElementById( cmsHolder ).style.visibility = 'hidden';
	 //document.getElementById( flashHolder ).style.top = '0px';
	 doAjaxRequest( 'GET', url, null);
	 //go to anchore...
}

