/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}


  function init() {
  
	  if (!Sarissa || !document.getElementById) return;
      
      var formElements = document.getElementsByTagName('form');
      for (var i = 0; i < formElements.length; i++) {
          if (formElements[i].className.match(/\bajaxify\b/)) {
              addEvent(formElements[i], 'submit', submitRating, false);
			
          }
      }

  }
  
  
  function submitRating(e) {
      /* Cancel the submit event, and find out which form was submitted */
      knackerEvent(e);
      var target = window.event ? window.event.srcElement : e ? e.target : null;
      if (!target) return;
      
      /* Check if this form is already in the process of being submitted. 
       * If so, don't allow it to be submitted again. */
      if (target.ajaxInProgress) return;
      
      /* Set up the request */
      var xmlhttp =  new XMLHttpRequest();
      xmlhttp.open('POST', 'rating-submit.php', true);
      
      /* The callback function */
      xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState == 4) {

              if (xmlhttp.status == 200)
                  addRatingFeedback(xmlhttp.responseXML, target);
              else
                  target.submit();
          }
      }
      
      /* Send the POST request */
      xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      xmlhttp.send('rating=' + target.elements['rating'].value);
   
       
      
	  target.getElementsByTagName('div')['loadingData'].innerHTML = "";
	
	  
	  /* Add temporary feedback that the request has been sent */   
	  var loadingImg = document.createElement('img');
	
      loadingImg.className = 'AAA';
      loadingImg.src = 'images/working.gif';
      target.getElementsByTagName('div')['loadingData'].appendChild(loadingImg);
   
  	  target.ajaxInProgress = true;
  }
  
  function addRatingFeedback(responseXML, target) {
  
	 target.ajaxInProgress = false;
	 document.getElementById("DataHolder").innerHTML = "";
	 document.getElementById("loadingData").innerHTML = "";
	 
	 loadingImg = target.getElementsByTagName('div')['loadingData'];
		  
	 var firstImgHolder = target.getElementsByTagName('img')['flag'];
	
	 var test = new Image();
	 
	 
	 var varImage = responseXML.getElementsByTagName('Image')[0].firstChild.data;
	 var varCountry = responseXML.getElementsByTagName('Country')[0].firstChild.data;
var varParagraph = responseXML.getElementsByTagName('Paragraph')[0].firstChild.data;
var varPara1 = responseXML.getElementsByTagName('Para1')[0].firstChild.data;
var varPara2 = responseXML.getElementsByTagName('Para2')[0].firstChild.data;
var varPara3 = responseXML.getElementsByTagName('Para3')[0].firstChild.data;
var varEmail = responseXML.getElementsByTagName('Email')[0].firstChild.data;
var varWeb = responseXML.getElementsByTagName('Web')[0].firstChild.data;
	 
	 varFlag = "images/" + varCountry + ".gif";
	 test.src = varFlag;
	 document.getElementById("flagHolder").innerHTML = "";
	 document.getElementById("flagHolder").appendChild(test);	 
	 	
	 eDiv = document.createElement("div");
	 eDiv.setAttribute("id","myDiv");
	 
	 if (varImage == 0){
	 
           if (varParagraph == 1){
             eDiv.appendChild(document.createTextNode(varPara1));
	     eDiv.appendChild(document.createElement('br')); 

             }
         else{
             eDiv.appendChild(document.createTextNode(varPara1));
	       eDiv.appendChild(document.createElement('br'));
             eDiv.appendChild(document.createElement('p'));

             eDiv.appendChild(document.createTextNode(varPara2));
	       eDiv.appendChild(document.createElement('br'));
             eDiv.appendChild(document.createElement('p'));
             eDiv.appendChild(document.createTextNode(varPara3));
	     eDiv.appendChild(document.createElement('br'));
         }
	 }
	 else{  
	 var imageData = new Image();
	 varDataImage = "images/" + varCountry + "data.gif";
	 imageData.src = varDataImage;
	 document.getElementById("DataHolder").innerHTML = "";
	 document.getElementById("DataHolder").appendChild(imageData);
	 }

      document.getElementById("DataHolder").appendChild(eDiv);
      BreakTAG = document.createElement("br");
      document.getElementById("DataHolder").appendChild(BreakTAG);
           
    
      var ulList = document.createElement('ul');
      var liList1 = document.createElement('li');
      var liList2 = document.createElement('li');
      
      
      var emailLink = document.createElement('a');
      emailLink.className = 'linkLower';
      var emailTextLink = document.createTextNode('email :');

      if (varEmail == 'none'){
      emailLink.appendChild(document.createTextNode('not available'));
      }
      else{
      var emailString = 'mailto:' + varEmail;
      emailLink.setAttribute('href',emailString);
      emailLink.appendChild(document.createTextNode(varEmail));
      }
     
      
      var webLink = document.createElement('a');
      webLink.className = 'linkLower';
      var webTextLink = document.createTextNode('web :');
      
      if (varEmail == 'none'){
      webLink.appendChild(document.createTextNode('not available'));
      }
      else{
      var webString = 'http://' + varWeb;
      var webtarget = '_blank';
      webLink.setAttribute('href',webString);
      webLink.setAttribute('target',webtarget);
      webLink.appendChild(document.createTextNode(varWeb));

      }      
           

    
  

      liList1.appendChild(emailTextLink);
      liList1.appendChild(emailLink);
      
      liList2.appendChild(webTextLink);
      liList2.appendChild(webLink);
      ulList.appendChild(liList1);
      ulList.appendChild(liList2);
      ulList.className = 'DataAjaxul';
      liList1.className = 'DataAjaxli1';
      liList2.className = 'DataAjaxli2';
      document.getElementById("DataHolder").appendChild(ulList);
      document.getElementById("DataHolder").className = 'DataHolderCSS'


	  // Disable form inputs
      target.getElementsByTagName('select')['rating'].disabled = false;
      target.getElementsByTagName('input')['subbutton'].disabled = false;
	  

  }