// PROTOFORM v1.0 (21/05/2008)- F.BURATTI - WWW.CSSREVOLT.COM

REGEX_AUTO_FIELD  = /^[^_]+(_Req)?(_(Tel|Email|Url|Date))?$/;
REGEX_BLANK       = /^\s*$/;
REGEX_EMAIL       = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
REGEX_TEL         = /^([0-9]*\-?\ ?\/?[0-9]*)$/;
REGEX_URL         = /^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/;
REGEX_DAY         = /^(0?[1-9]|[1-2][0-9]|3[01])$/;
REGEX_MONTH       = /^(0?[1-9]|1[0-2])$/;
REGEX_YEAR        = /^[0-9]{2,4}$/;
REGEX_TYPED_FIELD = /_(Tel|Email|Url|Date)$/;

function sendData (idform) {
    var url = 'http://www.sportsindia.com/wstest/Webservice2/service1.asmx/getshoutXMLStories';
	//var url = 'wstest/Webservice2/' + idform + '.asmx' + '/getshoutXMLStories';
	
	//var g = UI.defaultWM.getWindow(this);//.getgridId();
    //alert(gurl);
	var pars = 'gridId=0'; //Form.serialize(idform);
	//alert(gurl);
	var myAjax = new Ajax.Request( url, {
								  		method: 'post', 
										parameters: pars, 
										onLoading: showLoad, 
										onComplete: function (transport) {												
													    var newData = transport.responseText;
														$('working').hide();
														//$('box').insert({top:newData});
														var response = '<hr/>' + newData + '<hr/>';
														document.getElementById('nextComment').innerHTML = response;
														if ($('error')) { $('error').hide(); }
														Form.reset($(idform));									
														}										
										    }); //myAjax request
}//sendData

function showLoad () {
	$('box').insert({top:'<p id="working">loading...</p>'});
}

function addFormChecks() {	
	$$('form.validate').each(function(form) {
    	Event.observe(form,'submit',checkForm);	
	});
} // addFormChecks

function checkForm(e) {
    var form = Event.element(e);
	Event.stop(e);
    var errors = '';
    var faulty = null;
		if ($('response')) {
			$('response').hide();		
			}
	for (var index = 0; index < form.elements.length; ++index) {
		
        var field = form.elements.item(index);
		
        	if (!field.id.match(REGEX_AUTO_FIELD)) {
            	continue;
			}
        		
        var value = $F(field);
			
       		if (field.id.match(/_Req/) && value.match(REGEX_BLANK)) {
            	errors += '<li>' + field.title + '</li>';
            	faulty = faulty || field;
            	continue;
        	}
		
		var typedfield = field.id.match(REGEX_TYPED_FIELD);
		
			if (typedfield  && !value.match(REGEX_BLANK)) {
	    		var type = typedfield[1];
	    		var error = checkTypedField(value, type);
	    		if (error) {
					errors += '<li>' + field.title + '</li>';
					faulty = faulty || field;
	    		}
			}
	}
		
    if (errors==0) {
		sendData(form.id); // validation passed, send ajax request
		return;
	}
		if (!$('error')) {	
			$('box').insert({top:'<ul id=\"error\">' + errors + '</ul>'});
		}
		else {
			$('error').replace('<ul id=\"error\">' + errors + '</ul>');	
		}
	
    faulty.focus();
	
} //checkForm

function checkTypedField(value, type) {

    if ('Tel' == type) {
		var phone= value;
		if (!phone.match(REGEX_TEL)) {
        	return true;
		}     
    }
	
	if ('Email' == type) {
		var address= value;
		if (!address.match(REGEX_EMAIL)) {
        	return true;
		}     
    }
	
	if ('Url' == type) {
		var resource= value;
		if (!resource.match(REGEX_URL)) {
        	return true;
		}     
    }
  
      if ('Date' == type) {
        var comps = value.split('/');
        if (3 != comps.length || !comps[0].match(REGEX_DAY) ||
            !comps[1].match(REGEX_MONTH) ||
            !comps[2].match(REGEX_YEAR))
            return true;
    }
	
    return null;
} //checkTypedField

function hoverFocus() { 
 	$$('form.validate input','form.validate textarea').each(function(item) {
    	Event.observe(item,'focus',function() {
      		Element.addClassName(this,'hoverfocus');
    	}.bind(item));
    	Event.observe(item,'blur',function() {
      		Element.removeClassName(this,'hoverfocus');
    	}.bind(item));
	});
}//hoverFocus

function getgridId() {
    var url = window.location.href;
    var gridId = url.split('?gridId=');
    
    return gridId[1];
}

function Ajax_Request(divIdTitle, divIdStory, gridId) {

            var url = "wstest/Webservice2/service1.asmx/getshoutXMLStories?gridId=";
		    url = url + gridId;
                    
            new Ajax.Request(
                url, 
                {  
                      method: 'get',
                      asynchronous: true,
                      onException: function(t,e) { 
                        alert('ajax' + e.message);
                        handleException(e); 
                        
                      },
                      onFailure: function(transport) {     
	                     var response = transport.responseText || "no response text";
	  	                 alert(response); 
	  	              },
                      onSuccess: function(transport) {     
	                     var notice = $('test_content');
		                 var response = transport.responseText || "no response text";
		                 //document.getElementById(divId).innerHTML = response;
		                 parsetitleStory(divIdTitle, divIdStory, response);

		                 //alert(response); 
		              }
                }

          );
          
      } // Ajax_Request()

function validationInit() {	

	hoverFocus();
	addFormChecks();
}

function doOnResize () {
			//determineStyle();
			//setTall();
	}


function doOnLoad () {
   // initially hide the box container
  // $$($('Service1')).invoke('hide');

    Ajax_Request('artT', 'artD', getgridId()); ;
}

function parsetitleStory(divIdTitle, divIdStory, shoutContent) {
      
    try{
       
    //alert("shoutContent:" + shoutContent);
    
    /* 1. split at <col_story_title>. */
    /* Throws away split_title[0] */
    var split_title = new Array();
    split_title = shoutContent.split("&lt;col_story_title&gt;");
    
    //alert("split_title:" + split_title[1]);
    
    /* 2. split at </col_story_title>. */
    /* You have the title in split_titletemp[0]; */
    var split_titletemp = new Array();
    split_titletemp = split_title[1].split("&lt;/col_story_title&gt;");
    
    //alert("extracted title:" + split_titletemp[0]);
    
    /* 3. split at <col_story_text> on split_title[1]. */
    /*  Throw away split_story[0]; */
    var split_story = new Array();
    split_story = split_titletemp[1].split("&lt;col_story_text&gt;");
    
    /* 4. split at </col_story_> on split_story[1]. */
    /* You have the story in split_storytemp[0];*/
    var split_storytemp = new Array();
    split_storytemp = split_story[1].split("&lt;/col_story_text&gt;");
    
    //alert("extracted story:" + split_storytemp[0]);
    
    } catch (e) {
        alert(e.name); 

    }
                 
    var shoutDynamicPage = split_storytemp[0];
    
    shoutDynamicPage = shoutDynamicPage.replace( /&lt;/gi, "<" );                     
    shoutDynamicPage = shoutDynamicPage.replace( /&gt;/gi, ">" );     
   
    //alert(shoutDynamicPage);
    
    divSafeUpdate(divIdStory, shoutDynamicPage);
    divSafeUpdate(divIdTitle, split_titletemp[0]);
}  

function divSafeUpdate(divId, divData)
{
    try {
           $(divId).innerHTML = divData;
    }
    catch (e) {
        // IE fails unless we wrap the string in another element.
        var parentElement = document.getElementById(divId);
        var wrappingDiv = document.createElement('div');
        wrappingDiv.innerHTML = divData;
        parentElement.appendChild(wrappingDiv);
    }
}


//document.observe("dom:loaded", function() {
  // initially hide all containers for tab content
 // $$('box').invoke('hide');
//});

document.observe ('dom:loaded', validationInit, false); 

